【发布时间】:2012-03-26 13:39:05
【问题描述】:
我的服务器套接字有一些问题。我创建了一个 DatagramSocket 来在服务器和客户端之间聊天。
public static void main (String[] args) throws IOException {
byte[] send = new byte[1024];
byte[] receive = new byte[1024];
BufferedReader entree;
DatagramSocket serverSocket = null;
InetAddress ip;
InetAddress ipDest;
int port;
try {
serverSocket = new DatagramSocket(8888);
} catch (SocketException e) {
e.printStackTrace();
}
while (true) {
DatagramPacket recu = new DatagramPacket(receive, receive.length);
serverSocket.receive(recu);
String sentence = new String(recu.getData());
ipDest = recu.getAddress();
port = recu.getPort();
System.out.println("Reçu:"+sentence);
entree = new BufferedReader(new InputStreamReader(System.in));
String chaine = entree.readLine();
send = chaine.getBytes();
DatagramPacket dp = new DatagramPacket(send, send.length, ipDest, port);
serverSocket.send(dp);
send = new byte[1024];
receive = new byte[1024];
}
但我使用new BufferedReader(new InputStreamReader(System.in)) 获取下一个要发送的内容,但它正在阻塞。因此,我无法接收来自客户的信息并打印出来。
我该如何安排呢?
谢谢,eo
【问题讨论】:
-
如果您希望能够“同时”发送和接收,则必须将其放在不同的线程上。