Java TCP网络编程

#粤嵌星计划,粤嵌我来了#

#粤嵌星计划,粤嵌我来了#

1、TCP协议

TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。 

由于TCP协议的面向连接特性,它可以保证传输数据的安全性,所以是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。

2、实现TCP程序

(1)服务端(这里使用本地的eclipse编写服务端)

步骤:

1. 创建一个服务器,ServerSocket对象(指定端口号)

2. 开启服务器调用accept方法等待客户端连接

3. 接收客户端发送过来的数据。InputStream

4. 返回数据给客户端。OutputStream

public static void main(String[] args) {
		ServerSocket ss = null;
		try {
			ss = new ServerSocket(6666);
			Socket socket = ss.accept();
			DataInputStream dis = new DataInputStream(socket.getInputStream());
			DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
			while(true) {
				String receive = dis.readUTF();
				System.out.println("来自客户端的数据:" + receive);
				
				dos.writeUTF("收到了");
				dos.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
}

(2)客户端(这里使用本地的Idea编写客户端)

步骤:

1. 创建一个Socket对象,要指定ip地址,和端口号

2. 获取输出流

3. 写数据及输出OutputStream

4. 获取服务器端的数据:InputStream

public static void main(String[] args) {
        Socket socket = null;
        try {
            socket = new Socket("192.168.55.62",6666);
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
            while(true) {
                System.out.print("请输入信息:");
                dos.writeUTF(new Scanner(System.in).next());
                dos.flush();

                String receive = dis.readUTF();
                System.out.println("来自服务端的数据:" + receive);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
}

(3)结果

先启动服务器,等待客户端连接,启动客户端后,向服务器发送信息,服务端接收到来自客户端的信息后,向客户端回复,表示收到了

服务器端结果:

 

客户端结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值