服务器和客户端交互

时间:2016-04-28 00:42:22

标签: java

互联网上的程序员。我目前正在逐步阅读操作系统手册,并且有一些练习涉及以下几段代码。

这是服务器代码

import java.net.*;
import java.io.*;
public class DateServer{

    public static void main(String[] args) {
        try {
              ServerSocket sock = new ServerSocket(6013);
              // now listen for connections
              while (true) {
           Socket client = sock.accept();
           PrintWriter pout = new
           PrintWriter(client.getOutputStream(), true);
           // write the Date to the socket
           pout.println(new java.util.Date().toString());
           // close the socket and resume
           // listening for connections
           client.close();
           }
        }
        catch (IOException ioe) {
           System.err.println(ioe);
        }
   }
}

这是客户端代码

import java.net.*;
import java.io.*;
public class DateClient{

     public static void main(String[] args) {
         try {
              //make connection to server socket
              Socket sock = new Socket("127.0.0.1",6013);
              InputStream in = sock.getInputStream();
              BufferedReader bin = new
              BufferedReader(new InputStreamReader(in));
              // read the date from the socket
              String line;
              while ( (line = bin.readLine()) != null)
                     System.out.println(line);
              // close the socket connection
               sock.close();
             }
         catch (IOException ioe) {
            System.err.println(ioe);
         }
    }
 }

所以据我所知,服务器正在创建一个套接字并为其编写日期值。然后客户端需要很长时间并连接到服务器并在该套接字中写出值。我正确地解释了这段代码吗?这是我第一次使用套接字。

现在我的实际问题。我想让客户端连接到服务器(并打印出一条消息说你已连接),然后能够将值发送到服务器,以便服务器可以处理它。我该怎么做呢?我尝试过修改DataOutputStream和DataInputStream,但我之前从未使用过。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

你是对的。您有服务器写入套接字和客户端从套接字读取。你想扭转这种局面。

服务器应该如下所示:

ServerSocket sock = new ServerSocket(6013);
// now listen for connections
while (true)
{
    Socket client = sock.accept();

    InputStream in = client.getInputStream();
    BufferedReader bin = new BufferedReader(new InputStreamReader(in));
    // read the date from the client socket
    String line;
    while ((line = bin.readLine()) != null)
        System.out.println(line);

    // close the socket connection
    client.close();
}

客户端应如下所示:

try
{
    // make connection to server socket
    Socket sock = new Socket("127.0.0.1", 6013);
    PrintWriter out = new PrintWriter(sock.getOutputStream(), true);

    // send a date to the server
    out.println("1985");
    sock.close();
}
catch (IOException ioe)
{
    System.err.println(ioe);
}