这个是服务端程序:
package mypackage;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public BufferedReader br;
public void Connect()
{
try
{
ServerSocket ss=new ServerSocket(8888);
Socket s=ss.accept();

InputStream is=s.getInputStream();
DataInputStream ds=new DataInputStream(is);
InputStreamReader isr=new InputStreamReader(ds);
BufferedReader br=new BufferedReader(isr);
while(true)
{
System.out.println("客户端:"+br.readLine());
}
}catch(IOException e){}
}
//public String info;

public static void main(String args[])
{
Server ser=new Server();
ser.Connect();
}}
这个是客户端程序:package mypackage;
import java.io.*;
import java.net.Socket;public class Client
{
public Client()
{

}
private void Conn(){
try
{
Socket s=new Socket("127.0.0.1",8888);
while(true){
OutputStream os=s.getOutputStream();
//DataOutputStream dos=new DataOutputStream(os);
OutputStreamWriter osw=new OutputStreamWriter(os);
BufferedWriter bw=new BufferedWriter(osw);
}
}catch(IOException e)
{}
}

public static void main(String args[])
{
Client c=new Client();
c.Conn();
}
}
编译,运行都没问题,就是达不到效果(客户端发消息,服务器端收消息),好像是阻塞了,对输入输出那里不太懂,请各位帮忙分析一下.

解决方案 »

  1.   

    while(true)
    是不是发送太频繁了, 休息300ms再发送吧. Sleep一下
      

  2.   

    改了下import java.io.*;
    import java.net.*;public class Server {
    public static void main(String[] args) throws IOException {
    ServerSocket server = new ServerSocket(5678);
    Socket client = server.accept();
    BufferedReader in = new BufferedReader(new InputStreamReader(client
    .getInputStream()));
    PrintWriter out = new PrintWriter(client.getOutputStream());
    while (true) {
    String str = in.readLine();
    out.println("has receive words of client:" + str);
    out.flush();
    if (str.equals("end"))
    break;
    }
    client.close();
    }
    }
    import java.net.*;
    import java.io.*;public class Client {
    static Socket server; public static void main(String[] args) throws Exception {
    server = new Socket(InetAddress.getLocalHost(), 5678);
    BufferedReader in = new BufferedReader(new InputStreamReader(server
    .getInputStream()));
    PrintWriter out = new PrintWriter(server.getOutputStream());
    BufferedReader wt = new BufferedReader(new InputStreamReader(System.in)); while (true) {
    String str = wt.readLine();
    out.println(str);
    out.flush();
    if (str.equals("end")) {
    break;
    }
    System.out.println(in.readLine());
    }
    server.close();
    }
    }
      

  3.   

    首先客户端要通过标准输入流拿到键盘的输入:
    [code=JavaBufferedReader] wt = new BufferedReader(new InputStreamReader(System.in));
    [/code],
    同时客户端还要去返回服务端的输出:
    BufferedReader in = new BufferedReader(new InputStreamReader(server
                    .getInputStream()));
            PrintWriter out = new PrintWriter(server.getOutputStream());
    服务端要做的是拿到客户端的输入并提示我已经接收到:
     BufferedReader in = new BufferedReader(new InputStreamReader(client
                    .getInputStream()));
            PrintWriter out = new PrintWriter(client.getOutputStream());