TCP与UDP下的socket编程小结
tcp协议下的socket编程:比较靠谱,能发送大的文件。
服务器端:合法端口号在0到65535之间
ServerSocket sSocket=new ServerSocket(4567);
Socket socket = sSocket.accept();会产生阻塞。就是指收不到数据,就一直处于阻塞状态。
socket.getInputStream();
流的读操作----
客户端:
Socket socket = new Socket(所要发送到的IP,4567);
socket.getOuputStream();
流的写操作-----------
UDP下的的socket编程:速度快,只管发送,不管你是否能收到
服务器端:
DatagramSocket socket = new DatagramSocket(4567);
byte []data = new byte [1024];
//创建一个空的DatagramPacket对象
DatagramPacket packet =new DatagramPacket(data,data.length);
//使用receive方法接收客户端所发送的数据
socket.receive(packet);
完毕。查看数据请使用(String result=new String(packet.getData(),packet.getOffset(),packet.getLength());
packet.getData()-----返回的是数组。
packet.getOffset()-----偏移量
注:UDP更简单先,因为其接收的是数据包,没有流的概念。
客户端:
DatagramSocket socket = new DatagramSocket(4567);
InetAddress serverAddress= InetAddress.getByName(所要发送到的IP);
String str="hello hsiangyu";
//拆分成字节数组
byte []data =str.getBytes();
//创建DatagramPacket对象,并指定要将这个数据包发送到网络中的哪个地址,以及端口号
DatagramPacket packet =new DatagramPacket(data,data.length,serverAddress,4567);
socket.send(packet);
完毕。
注:发送的也是数据包,没有流的概念。