java学习_ _初探Tcp程序


服务器代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.channels.AcceptPendingException;


public class MyTcp {
	private BufferedReader reader;  //这里采用缓冲读取的BUFFeredReader类;
	private ServerSocket server;	//这里表示建立服务器套接字,等待了客户端请求;
	private Socket socket;			//用于创建新的套接字用于表示与客户端进行了连接;
	void getserver(){
		try{
			server =new ServerSocket(8998);				  //实例化Socket对象;
			System.out.println("服务器套接字已经创建成功"); 
			while(true){
				System.out.println("等待与客户机的连接");
				socket=server.accept();                    //这里建立连接然后得到socket;
				reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));//这里得到客户端的outputStream的信息流;
				getClientMessage();								//对信息流进行处理并且对这个连接进行关闭;
			}
			}catch(Exception e){
				e.printStackTrace();
			}
	}
	private void getClientMessage(){
		try{
			while(true)
			{
				System.out.println("客户机内容"+reader.readLine()); 
			}
		}catch(Exception exception){
			exception.printStackTrace();
		}
		try{
			if(reader!=null){
				reader.close();
			}
			if(socket!=null){
				socket.close();
			}
		}catch(Exception exception){
			exception.printStackTrace();
		}
	}
	public static void main(String[] args) {
		MyTcp tcp=new MyTcp();
		tcp.getserver();

	}

}

运行结果:

客户机代码:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.Socket;

import javax.swing.*;


public class MyClien extends JFrame{                            
	private PrintWriter writer;                                    //声明PrinterWriter对象
	Socket socket;                                                 //声明Socket对象
	private JTextArea ta=new JTextArea();                          //创建控件
	private JTextField tf=new JTextField();                        //创建控件
	Container container;                                           //创建容器
	public MyClien(String title){                                  //构造函数
		super(title);                                          //调用父类的构造                     
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //设置关闭模式
		container=this.getContentPane();                       //实例化对象
		final JScrollPane scrollPane=new JScrollPane();        
		scrollPane.setViewportView(ta);
		container.add(scrollPane,BorderLayout.CENTER);
		scrollPane.setViewportView(ta);
		container.add(tf,"South");                              //将文本框放置在窗体的下部
		tf.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				writer.println(tf.getText());
				ta.append(tf.getText()+"\n");
				ta.setSelectionEnd(ta.getText().length());
				tf.setText("");                         //将文本框清空
				
			}
		});
		
	}
	private void connect(){                                        //创建和服务器连接的方法
		ta.append("尝试连接\n");                                //ta控件的提示信息
		try {                                                                
			socket =new Socket("127.0.0.1",8998);          //实例化一个套接字,构造函数写本机ip:127.X.X.X,端口8998
			writer =new PrintWriter(socket.getOutputStream(),true);
			ta.append("完成连接\n");
			
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		MyClien clien=new MyClien("向服务器送数据");
		clien.setSize(200,200);
		clien.setVisible(true);
		clien.connect();

	}

}

运行:


声明:对于本文出现的任何疑问意见可评论或者加WX威信交流

发布了36 篇原创文章 · 获赞 26 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_36812792/article/details/80022534