分别运行TCP服务器和TCP客户端,就是互相连不上;希望大神解答
这是服务器端:
public class ServerDemo implements Runnable { @Override
public void run() {
ServerSocket ss = null;
Socket s = null;
BufferedReader br = null;
BufferedWriter bw = null; try {
ss = new ServerSocket(10000);
s = ss.accept();
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
while (true) {
System.out.println("server start!");
bw.write("Server Test!");
bw.flush();
for(String temp=null;(temp = br.readLine()) != null;){
System.out.println(temp);
} }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
这是客户端:public class ClientDemo implements Runnable {
Socket s;
BufferedReader br;
BufferedReader br2;
BufferedWriter bw; @Override
public void run() { try {
s = new Socket();
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); while (true) {
System.out.println("client start!");
System.out.println(br.readLine());
bw.write("Client Test");
bw.flush();
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }}
多线程启动部分:
public class Main { public static void main(String[] args) {
new Thread(new ClientDemo()).start();
new Thread(new ServerDemo()).start();
}
}

解决方案 »

  1.   

    客户端代码
    new Socket();
    ->new Socket("localhost", 10000);
    你没有指定服务器地址和端口号
      

  2.   

    最好将读写放到不同的线程里,并在循环中追加sleep,不然也读取不到
      

  3.   

    你的启动类中,启动的顺序不对,应该先启动server 最好sleep一下 再启动client
      

  4.   

    我想说,客户端socket的connect函数没有调用过,你是怎么指望它们会连接的?
      

  5.   

    不需要connect~,你自己实际操作一下
      

  6.   

    服务端要先启动,之后才客服端才能运行吧。
    你可以在一些代码后加上一些输出语句,比如accept() 加上System.out.println("接收成功");然后看代码在哪个位置停了下来。
      

  7.   

    问题不在启动顺序上,我调整之后问题依旧,Thread t2 = new Thread(new ServerDemo());
    Thread t1 = new Thread(new ClientDemo());
    t1.sleep(2000);
    t2.start();
    t1.start();
      

  8.   

    在accept之后就有使用输出语句打印说明服务器端已经启动了
      

  9.   

    服务器就在while循环里面停住了,客户端也一直连不上服务器
      

  10.   

    如果客户端能连上服务器,那么就是你客户端的write没有包含换行符,所以readLine并不觉得一行结束,所以不返回。你加个\n在write最后试试
      

  11.   

    在accept之后就有使用输出语句打印说明服务器端已经启动了在accept之后就有使用输出语句打印说明服务器端已经启动了
    你能先测试下,不用多线程。看看启动服务端之后,在手动启动客户端,看看能否连接成功。我怀疑是不是客服端的程序在先启动之后,发现没有服务端,它就死翘翘。
    也不会去寻找服务端,也不会再次生成客服端。
      

  12.   

    将Client的Socket改成这 在将启动顺序变一下new Thread(new ServerDemo()).start();
    Thread.sleep(100);
    new Thread(new ClientDemo()).start();
    另外你的i/o没有放在while中只能输入一次的,while在你这里没用,测试一下,改后是好使的