版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yun1996/article/details/79386997
udp通讯协议特点:
1.将数据及其源和目的的封装为数据包,面向无连接
2.每个数据包大小限制64K中
3.因为无连接,所以不可靠
4.因为无连接,所以速度快
5.udp通讯部分客户端和服务端的,分发送端和接收端
tcp通讯的特点:
1.tcp是基于io流进行数据的传输的,面向连接的
2.tcp进行数据数据传输的时候没有大小限制
3.tcp是通过三次握手机制,保证数据的完整性,可靠协议
4.tcp是面向连接的,所以速度慢
扫描二维码关注公众号,回复:
4150465 查看本文章
5.tcp是区分客户端与服务端的
tcp协议下的socket类:
1.socket(客户端类):tcp的客户端一旦启动那个,以服务端一定要建立连接
2.serversocket(服务端类):
tcp的客户端建立步骤:
1.建立tcp的客户端服务
2.获取对应的流对象
3.写出或读取数据
4. 关闭资源package cn.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
public class Demo1Clinet {
public static void main(String[] args) throws IOException {
//建立tcp服务
Socket socket=new Socket(InetAddress.getLocalHost(),9090);
//获取到socket的输出流对象
java.io.OutputStream outputstream=socket.getOutputStream();
//利用输出流把数据写出即可
outputstream.write("hello".getBytes());
//获取到一个输入流对象,读取服务端回送的数据
InputStream inputStream=socket.getInputStream();
byte[] buf=new byte[1024];
int length=inputStream.read();
System.out.println(new String(buf,0,length));
//关闭资源
socket.close();
}
}
Java.net.BindException 端口被占用
ServerSocket的使用步骤::
1.建立tcp服务端的服务
2.接受客户端的连接,得到一个Socket对象
3.获取对应的流对象,读取或者写出数据
4.关闭资源
package cn.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Demo1Server {
public static void main(String[] args) throws IOException {
//建立tcp的服务端,并建立一个监听端口
ServerSocket serversocket=new ServerSocket(9090);
//接受客户端的连接,accept()接受客户端的连接方法也是一个阻塞型的方法,没有客户端与其连接时,会一直等待下去。
Socket socket=serversocket.accept();
//获取输入流对象,读取客户端发送的内容
InputStream inputstream=socket.getInputStream();
byte[] buf=new byte[1024];
int length=0;
length=inputstream.read(buf);
System.out.println(new String(buf,0,length));
//获取输出流对象,向客户端发消息
OutputStream outputstream= socket.getOutputStream();
outputstream.write("shoudao".getBytes());
//关闭资源
serversocket.close();
}
}