制作单个客户端和服务器

时间:2011-03-23 05:55:27

标签: 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();
    }
  }
 }
}

我可以将我的电脑兼容服务器和客户端。如果是,请建议一条出路。

2 个答案:

答案 0 :(得分:1)

是的,你的电脑绝对可以是服务器和客户端。但是,如何从你的代码中找到我不能说的。

一般情况下,在TheServer()中,您需要创建ServerSocket并将其设置为在serverPort上收听。然后执行类似Socket clientSocket = serverSocket.accept()之类的操作,等待并接受下一个传入连接。

然后在TheClient()中创建一个新的Socket到" localhost"在serverPort。这将连接您的服务器和客户端。

请注意,由于serverSocket.accept()阻止,您的服务器和客户端无法共享同一个线程。因此,您可以像现在一样运行两个单独的应用程序实例,也可以使用main()TheServer()设置新线程,然后在调用{{1}之前启动它}}

答案 1 :(得分:0)

只要客户端和服务器在不同的端口上发送和接收,就没有理由不能让客户端和服务器在同一台机器上运行。事实上,在我测试客户端/服务器应用程序时,我在大学期间经常这样做。