import java.io.*;
import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { DatagramSocket clientSocket = new DatagramSocket(); String serverHostname = new String("127.0.0.1"); InetAddress IPAddress = InetAddress.getByName(serverHostname); BufferedReader inFromUser = new BufferedReader(new InputStreamReader(
System.in));
String sentence;
int a ;
byte[] receiveData = new byte[5120]; while((sentence = inFromUser.readLine())!=null) {
byte[] sendData = new byte[5120]; sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, 20001);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
clientSocket.setSoTimeout(3000);
????????????????????????????????????? clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); InetAddress returnIPAddress = receivePacket.getAddress();
System.out.println("From: " + returnIPAddress);
System.out.println("Message: " + modifiedSentence);
clientSocket.close();
}
}
import java.io.*;
import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { // Create a Server Datagram Socket binded to Port 20001
DatagramSocket serverSocket = new DatagramSocket(20001); // The Datagram is 5K
byte[] receiveData = new byte[5120];
byte[] sendData = new byte[5120]; // Counter
int i = 1; while (true) { // Receive a Packet if i = odd number
if (i % 2 != 0) { receiveData = new byte[5120];
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
serverSocket.receive(receivePacket);
i++;
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
System.out.println("From: " + IPAddress + ":" + port);
System.out.println("Message: " + sentence);
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
}
当server收到消息 会发个ACK给client 如果client 过了3秒钟(我放了个clientSocket.setSoTimeout(3000在哪,后面应该有个什么loop)没收到ACK 重发之前的消息 我在server里准备每第2个收不到 来test这个重发, 谁会帮帮写下client3秒没收到ACK 重发消息吗 谢谢 急!!!!小弟新手 麻烦写相信点
import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { DatagramSocket clientSocket = new DatagramSocket(); String serverHostname = new String("127.0.0.1"); InetAddress IPAddress = InetAddress.getByName(serverHostname); BufferedReader inFromUser = new BufferedReader(new InputStreamReader(
System.in));
String sentence;
int a ;
byte[] receiveData = new byte[5120]; while((sentence = inFromUser.readLine())!=null) {
byte[] sendData = new byte[5120]; sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, 20001);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
clientSocket.setSoTimeout(3000);
????????????????????????????????????? clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); InetAddress returnIPAddress = receivePacket.getAddress();
System.out.println("From: " + returnIPAddress);
System.out.println("Message: " + modifiedSentence);
clientSocket.close();
}
}
import java.io.*;
import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { // Create a Server Datagram Socket binded to Port 20001
DatagramSocket serverSocket = new DatagramSocket(20001); // The Datagram is 5K
byte[] receiveData = new byte[5120];
byte[] sendData = new byte[5120]; // Counter
int i = 1; while (true) { // Receive a Packet if i = odd number
if (i % 2 != 0) { receiveData = new byte[5120];
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
serverSocket.receive(receivePacket);
i++;
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
System.out.println("From: " + IPAddress + ":" + port);
System.out.println("Message: " + sentence);
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
}
当server收到消息 会发个ACK给client 如果client 过了3秒钟(我放了个clientSocket.setSoTimeout(3000在哪,后面应该有个什么loop)没收到ACK 重发之前的消息 我在server里准备每第2个收不到 来test这个重发, 谁会帮帮写下client3秒没收到ACK 重发消息吗 谢谢 急!!!!小弟新手 麻烦写相信点
然后在run里捕捉它的异常,在异常里处理应该就可以了
1、将代码进行良好的格式化,以方便阅读。
2、在发帖文本框的上方单击“#”按钮,选择 Java
3、将代码粘贴到【code=Java】和【/code】之间。发出来的帖子就会是下面的效果:public class Hello { // 程序入口
public static void main(String[] args) {
System.out.println("Hello!");
}
}