testudpserverld.java
来自「UDP实现的可靠数据传递的小程序。 考虑了丢包的几种可能性及其处理方法。」· Java 代码 · 共 65 行
JAVA
65 行
import java.net.*;
import java.io.*;
public class TestUDPServerld
{
public static void main(String args[]) throws Exception
{
int i,j=0;
byte buf[] = new byte[1024];
byte data[] = new byte[15000];
char k=' ',s = '\u0001';
DatagramPacket dp1 = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
FileOutputStream out = null;
out = new FileOutputStream("C:/Documents and Settings/sc_admin/桌面/test2.txt");
buf[0]=0;
boolean f=false;
while(k != '\u0000')
{
ds.setSoTimeout(10000);
try
{
ds.receive(dp1);
f=true;
System.out.println("接收成功!");
}
catch(SocketTimeoutException ex)
{System.out.println("等待1秒...");}
if(buf[0]==(int)s)
{
for(i=1;i<41;i++)
{
data[j++]=buf[i];
}
DatagramPacket dp2 = new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1", 9999));
System.out.println((int)s+"已经到达");
ds.send(dp2);
s++;
System.out.println("等待"+(int)s);
}
else
{
if(buf[0]==(int)'\u0000' && buf[42]==(int)s)
{
k='\u0000';
for(i=1;i<41;i++)
{
data[j++]=buf[i];
}
System.out.println((int)s+"已经到达");
}
else
if(f)
{
System.out.println("请重发"+ (int)s);
f=false;
}
DatagramPacket dp2 = new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1", 9999));
ds.send(dp2);
}
}
out.write(data);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?