java 网络通讯
(一)大家好,这篇博客小编给大家讲解java 网络通讯相关的知识。
1.网络通讯的三个要素:
- IP地址
- 端口号
- 协议
2.网络通讯的协议
TCP:
- 面向连接的,有特有的通道。
- 发送数据是依靠IO发送的,在连接中传输大数据量,没有大小限制。
- 通过三次握手协议,可靠协议,不会丢失数据。
通信前必须建立连接,效率稍低。
UDP:
UDP是面向无连接的。
- 发送的数据要先封装到数据包中,每个数据包的大小限制在64K之内。
- 因为面向无连接,数据包传输不可靠。
因为无连接,所以速度快。
PS:UDP数据包丢失的情况
CPU处理能力不足
- 带宽不足
(二)TCP协议的代码实现
客户端:
//客户端
public static void Client()throws Exception{
//建立TCP服务,创建一个socket对象,输入IP地址和端口号
Socket socket = new Socket(InetAddress.getLocalHost(),9090);
OutputStream out = socket.getOutputStream();
out.write("大家好,我来自客户端,我叫Alan\r\n".getByte());//写数据
BufferReader bufferedReader = new BufferReader(new InputStreamReader(socket.getInputStream()));
System.out.println("客户端"+bufferedReader.readLine());
socket.getInputStream();
//关闭资源
socket.close();
}
服务端:
public static void Server() throws Exception{
new Thread (){
try{
public void run(){
//建立TCP的服务
ServerSocket serverSocket = new ServerSocket(9090);
//建立接收客户端的链接
Socket socket = serverSocket.accept();
//读取客户端的数据
BufferReader bufferedReader = new BufferReader(new InputStreamReader(socket.getInputStream()));
System.out.println("服务端"+bufferedReader.readLine());
//给客户端回送数据
OutputStream out = socket.getOutputStream();
out.write("你好客户端,我是服务端\r\n".getByte());
}
}catch (IOException e){
e.printStackTrace();
}
}.start();
}
main方法
public static void main(String[] args){
Server();
Client();
}
还没有评论,来说两句吧...