Java网络编程 实现TCP通信

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

TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。
由于TCP协议的面向连接特性,它可以保证传输数据的安全性,所以是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。

具体实现
客户端:

/*
 *   客户端步骤:
 *   1. 创建一个Socket对象,要指定ip地址,和端口号
 *   2. 获取输出流
 *   3. 写数据及输出OutputStream
 *   4. 获取服务器端的数据:InputStream
 *   5. 关闭资源
 */
public class Client {    
    public static void main(String[] args) throws IOException {
        //1.创建一个Socket对象,要指定ip地址,和端口号        
        Socket s = new Socket("192.168.55.1", 6006);
        //2.获取输出流        
        OutputStream out = s.getOutputStream();
        //3.写数据及输出OutputStream        
        out.write("服务器你好".getBytes());
        //4.获取服务器端的数据:InputStream        
        InputStream in = s.getInputStream();        
        byte[] bytes = new byte[1024];        
        int read = in.read(bytes);        
        String str = new String(bytes,0,read);        
        System.out.println("服务器说:"+str);
        //5.关闭资源        
        s.close();    
    }
}

服务端:

/*
 *  服务器步骤:
 *  1.创建一个服务器,ServerSocket对象(指定端口号) 
 *  2.开启服务器调用accept方法等待客户端连接
 *  3.接收客户端发送过来的数据InputStream 
 *  4.返回数据给客户端。OutputStream
 *  5.关闭资源
 */
public class Service {
	public static void main(String[] args) throws IOException {
	                //1.创建一个服务器,ServerSocket对象(指定端口号)
	ServerSocket ss = new ServerSocket(6006);
	                //2.开启服务器调用accept方法等待客户端连接
	Socket socket = ss.accept();
	                //3.接收客户端发送过来的数据InputStream 
	InputStream in = socket.getInputStream();
	byte[] bytes = new byte[1024];
	int i = in.read(bytes);
	String str = new String(bytes, 0, i);
	System.out.println("客户端消息:" + str);
	                //4.返回数据给客户端。
	OutputStream out = socket.getOutputStream();
	out.write("我很好".getBytes());
	                //5.关闭资源
	socket.close();
	ss.close();
	}
}

TCP协议与UDP协议的区别
(1)TCP是可靠传输,UDP是不可靠传输;
(2)TCP面向连接,UDP无连接;
(3)TCP传输数据有序,UDP不保证数据的有序性;
(4)TCP不保存数据边界,UDP保留数据边界;
(5)TCP传输速度相对UDP较慢;
(6)TCP有流量控制和拥塞控制,UDP没有;
(7)TCP是重量级协议,UDP是轻量级协议;

你可能感兴趣的:(java,网络,tcp/ip)