嗨,我有一個udp客戶端服務器代碼不工作我問一個普遍的問題「Shane是一個很好的孩子」兩個代碼都沒有出現錯誤,但是當我運行代碼時,它輸出 DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress,9876);而不是讓客戶問候服務器。流程應該是Server初始化等客戶機 - 客戶機問候服務器 - 服務器問題 - 客戶機回答問題 - 服務器統計是否投票和顯示天氣或不是人= =。 如何圓代碼的任何建議將受到歡迎 聽到的是服務器端的代碼客戶端服務器udp套接字
import java.net.*;
public class VotingServer {
//private static final int yes = 0;
private static int yes2;
public static void main(String[] args, int getrep) throws Exception{
// part 1: initialization
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
InetAddress[] IPAddressList = new InetAddress[5];
int[] portList = new int[5];
// part 2: receive the greeting from clients
for (int i=0; i<1; i++) {
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String greeting = new String(receivePacket.getData());
System.out.println("From Client: " + greeting);
IPAddressList[i] = receivePacket.getAddress();
portList[i] = receivePacket.getPort();
} // for (i)
// part 3: broadcast the votiong question to all clients
String question = "is shane a good kid 1 for yes 0 no?\n";
for (int i=0; i<5; i++) {
sendData = question.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length);
serverSocket.send(sendPacket);
// part 5: receive the age of client (B)
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String ageStr = new String(receivePacket.getData());
yes2 = Integer.parseInt(ageStr);
IPAddressList[i] = receivePacket.getAddress();
portList[i] = receivePacket.getPort();
// part 6: compute the price (C)
double count= 0;
double no = 0;
if (yes2 >= 1) count = 1;
else
if (yes2 <= 0) no = 1;
// part 7: send the price to client
String rep = null;
String countStr = ""+count+"\n";
String noStr = ""+no+"\n";
if (no < count) rep = "Is a good kid";
else
if (no > count) rep = "is a bad kid";
System.out.println(" "+getrep);
sendData = countStr.getBytes();
sendData = noStr.getBytes();
sendData = rep.getBytes();
DatagramPacket sendPacket1 =
new DatagramPacket(sendData, sendData.length);
serverSocket.send(sendPacket1);
} // main()
}} // UDPServer
這裏是客戶端代碼 進口java.io. ; import java.net。;
public class ClientVoting {
public static void main(String[] args) throws Exception {
// part 1: initialization
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
// part 2: receive the question from server
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String question = new String(receivePacket.getData());
System.out.println("From Server:" + question);
String yes2 = inFromUser.readLine();
sendData = yes2.getBytes();
DatagramPacket sendPacket1 =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket1);
// part 4: get the price from server
receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String rep = new String(receivePacket.getData());
System.out.println("the answer is " + rep);
// part 4: close the socket
clientSocket.close();
} // main()
} // class UDPClient
由於SPF