我编写了一个客户端服务器程序:
{
import java.net.*;
class verify {
public static int serverPort=998;
public static int clientPort=999;
public static int buffer_size=1024;
public static DatagramSocket ds;
public static byte buffer[]=new byte[buffer_size];
public static void TheServer() throws Exception {
int pos=0;
while (true) {
int c=System.in.read();
switch(c) {
case -1:
System.out.println("server quits");
return;
case '\r':
break;
case '\n':
ds.send(new DatagramPacket(buffer,pos,InetAddress.getLocalHost(),clientPort)) ;
pos=0;
break;
default:
buffer[pos++] = (byte) c;
}
}
}
public static void TheClient()throws Exception {
while(true) {
DatagramPacket p=new DatagramPacket(buffer,buffer.length);
ds.receive(p);
System.out.println(new String(p.getData(),0,p.getLength()));
}
}
public static void main(String args[]) throws Exception{
if(args.length==1) {
ds=new DatagramSocket(serverPort);
TheServer();
} else {
ds=new DatagramSocket(clientPort);
TheClient();
}
}
}
}
我可以将我的电脑兼容服务器和客户端。如果是,请建议一条出路。
答案 0 :(得分:1)
是的,你的电脑绝对可以是服务器和客户端。但是,如何从你的代码中找到我不能说的。
一般情况下,在TheServer()
中,您需要创建ServerSocket
并将其设置为在serverPort
上收听。然后执行类似Socket clientSocket = serverSocket.accept()
之类的操作,等待并接受下一个传入连接。
然后在TheClient()
中创建一个新的Socket
到" localhost"在serverPort
。这将连接您的服务器和客户端。
请注意,由于serverSocket.accept()
阻止,您的服务器和客户端无法共享同一个线程。因此,您可以像现在一样运行两个单独的应用程序实例,也可以使用main()
为TheServer()
设置新线程,然后在调用{{1}之前启动它}}
答案 1 :(得分:0)
只要客户端和服务器在不同的端口上发送和接收,就没有理由不能让客户端和服务器在同一台机器上运行。事实上,在我测试客户端/服务器应用程序时,我在大学期间经常这样做。