网络通信协议
网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。
TCP/IP协议:传输控制协议/因特网互联协议,是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。
协议分类
UDP
用户数据报协议。UDP是无连接通信协议,即发送端和接收端不必存在逻辑连接,发送端不必知道接受端是否存在,就会发送数据;接受端不必响应是否收到数据。
特点:
1、消耗资源小,通信效率高。
2、偶尔会丢失一两个数据包。
3、数据包被限制在64kb以内,超出这个范围就不能发送了。
使用场景:视频会议、视频直播、qq聊天等。
TCP
传输控制协议。面向连接的通信协议,即在传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间无差错的数据传输。
TCP三次握手:
第一次握手:客户端向服务器发送连接请求。
第二次握手:服务器响应客户端请求,通知客户端收到了请求。
第三次握手:客户端向服务器发送确认信息,表示连接成功,确认连接。
使用场景:发送文件等
网络编程三要素
协议、IP地址、端口号
TCP通信程序
两端通信步骤:
1、服务端程序需要先启动,等待客户端连接。
2、客户端主动连接服务器端,连接成功后才能通信,服务器不能主动连接客户端。
java中提供了两个类用于实现TCP通信
1、客户端(java.net.Socket),创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。
2、服务端(java.net.ServerSocket),创建ServerSocket对象,相当于启动一个服务,等待客户端的连接请求。
实例
//服务器
public class TcpServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8181);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
byte b[] = new byte[1024];
int len = inputStream.read(b);
System.out.println(new String(b,0,len));
OutputStream outputStream = accept.getOutputStream();
outputStream.write("yes ,i am !".getBytes());
accept.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//客户端
public class TcpClient {
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("localhost",8181);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello Server !!".getBytes());
InputStream inputStream = socket.getInputStream();
byte bs[] = new byte[1024];
int len = inputStream.read(bs);
System.out.println(new String(bs,0,len));
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
网友评论