java开发单一客户机和服务器
我编写了一个客户机-服务器程序:
{
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();
}
}
}
}
我可以让我的电脑同时成为服务器和客户端吗。如果是,请建议一条出路
# 1 楼答案
是的,你的电脑绝对可以既是服务器又是客户端。然而,我不能说如何从你的代码中到达那里
不过,一般来说,在
TheServer()
中,您需要创建一个ServerSocket
,并将其设置为在serverPort
上侦听。然后执行类似Socket clientSocket = serverSocket.accept()
的操作来等待并接受下一个传入连接然后在
TheClient()
中,在serverPort
上创建一个新的Socket
到“localhost”。这将连接服务器和客户端请注意,由于
serverSocket.accept()
块,服务器和客户端不能共享同一个线程。因此,您可以像现在这样运行应用程序的两个独立实例,或者使用main()
为TheServer()
设置一个新线程,然后在调用TheClient()
之前启动它# 2 楼答案
只要客户机和服务器在不同的端口上发送和接收,就没有理由不能让客户机和服务器在同一台机器上运行。事实上,我在大学期间测试客户机/服务器应用程序时经常这样做