TCP_基本步骤

/* 创建客户端
*1.建立连接:使用Socket创建客户端+服务器的地址和端口
*2.操作输入输出流操作
*3.释放资源

 package TCP_基本步骤;
/* 创建客户端
 *1.建立连接:使用Socket创建客户端+服务器的地址和端口
 *2.操作输入输出流操作
 *3.释放资源
 */
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
	private int port ;
	private String ip;
	private Socket client;
	private DataOutputStream out;
	public Client(String ip,int port) {
		this.ip=ip;
		this.port=port;
	}
	public void test() {
		
		try {
			//建立连接:使用Socket创建客户端+服务器的地址和端口
			client =new Socket(ip,port);
			//.操作输入输出流操作
			out =new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));
			BufferedReader read =new BufferedReader(new InputStreamReader(System.in));
			while(true) {
			System.out.println(read.readLine());
			out.writeUTF(read.readLine());
			//释放资源
			out.flush();
			if(read.readLine().equals("bye")) {
				out.close();
			client.close();
			break;
			}
			}
			
			
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
public static void main(String[] args) {
	System.out.println("客户端开始工作");
	Client run=new Client("localhost", 8888);
	run.test();
}

}
 */

/*创建服务器

  • 指定端口使用ServerSocket(port) 创建服务器
  • 阻塞式等待连接
  • 操作:输入输出操作
  • 释放资源
    */
 package TCP_基本步骤;
/*创建服务器
 * 指定端口使用ServerSocket(port) 创建服务器
 * 阻塞式等待连接
 * 操作:输入输出操作
 * 释放资源
 */
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	private ServerSocket server ;
	private Socket client;
	private DataInputStream in;
	private int port;
	Server(int port){
		this.port =port;
	}
	public void testserver() {
		try {
			//指定端口使用ServerSocket(port) 创建服务器
			server=new ServerSocket(port);
			// 阻塞式等待连接
			client =server.accept();
			System.out.println("建立了一个连接");
			//操作:输入输出操作
			in =new DataInputStream(client.getInputStream());
			while(true) {
				
				String buf=in.readUTF();
				System.out.println(buf);
				if(buf.equals("bye")) {
					break;
				}	
			}
			//释放资源
			client.close();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	} 
	public static void main(String[] args) {
		System.out.println("服务器开始工作");
		Server run =new Server(8888);
		run.testserver();
	}
}

在这里插入图片描述
还有问题:每输入两次,只在服务器显示一次,应该是客户端的问题,日后再改!

发布了39 篇原创文章 · 获赞 13 · 访问量 2097

猜你喜欢

转载自blog.csdn.net/qq_44620773/article/details/104250040