那是因为你用的是tcp短连接通信。应该用长连接通信。

解决方案 »

  1.   

    例子如下:Server 端:package com.csdn.wyq.socket;import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;public class Server implements Runnable { private ServerSocket serverSocket;

    private int listenPort;

    public Server(int listenPort) {
    super();
    this.listenPort = listenPort;
    } @Override
    public void run() {
    Socket socket = null;
    InputStream in = null;

    try {
    serverSocket = new ServerSocket(listenPort);
    System.out.println("Server is listening ... ");
    socket = serverSocket.accept();
    in = socket.getInputStream();
    byte[] inContents = new byte[1024];
    while (in.read(inContents) != -1) {
    System.out.println(new String(inContents));
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    if (socket != null) {
    try { socket.close(); } catch (IOException e) { e.printStackTrace(); }
    socket = null;
    }
    if (serverSocket != null) {
    try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); }
    serverSocket = null;
    }
    if (in != null) {
    try { in.close(); } catch (IOException e) { e.printStackTrace(); }
    in = null;
    }
    }
    }

    public static void main(String[] args) {
    Server server = new Server(17901);
    new Thread(server).start();
    }
    }Client 端:
    package com.csdn.wyq.socket;import java.io.IOException;
    import java.io.OutputStream;
    import java.net.Socket;public class Client implements Runnable { private Socket socket;
    /**
     * @param args
     */
    public static void main(String[] args) {
    Client client = new Client();
    new Thread(client).start();
    } @Override
    public void run() {
    OutputStream out = null;
    try {
    socket = new Socket("127.0.0.1", 17901);
    out = socket.getOutputStream();
    String str = "Hello\n";
    while (true) {
    out.write(str.getBytes());
    Thread.sleep(1000);
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (socket != null) {
    try { socket.close(); } catch (IOException e) { e.printStackTrace(); }
    socket = null;
    }
    if (out != null) {
    try { out.close(); } catch (IOException e) { e.printStackTrace(); }
    out = null;
    }
    }
    }}