A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何羡玉 于 2013-4-28 21:24 编辑

谁知道这是怎么回事

package sockedTest;
import java.io.*;
import java.net.*;
public class server {
/**
  * @param args
  * @throws IOException
  */
public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  
  ServerSocket ss=new ServerSocket (18000);
        Socket s=ss.accept();
InputStream in= s.getInputStream();
OutputStream out=s.getOutputStream();
  byte[] b=new byte[1024*64];
  int len=in.read(b);
  out.write("客户端,你好".getBytes());
  System.out.println(new String(b,0,len));
      s.close();
}
}

package sockedTest;
import java.io.*;
import java.io.InputStream;
import java.net.*;
public class client {
            

         
        
public static void main(String[] args) throws UnknownHostException, IOException
{
  
        Socket s=new Socket("127.0.0.1",18000);
       InputStream in= s.getInputStream();
       OutputStream out=s.getOutputStream();
        byte[] b=new byte[1024*64];
       int len= in.read(b);
        System.out.print(new String (b,0,len));
        out.write("服务端,你好".getBytes());
        s.close();
}
}





评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

倒序浏览
估计是运行环境的问题吧?
回复 使用道具 举报
一点小问题,可能楼主在写的时候没有注意到,调整一下代码的顺序就好了。
客户端写法有问题,read方法是一个阻塞方法,你没有发过来数据,我就一直在那里等,知道你发过来为止。
在这个例子中,显然只有在客户端先向服务器发送数据之后,才会从服务器那里得到服务器发送过来的数据,
所以你只要把out.write("服务端,你好".getBytes());这句话放在read前面就OK了。
回复 使用道具 举报
  out.write("客户端,你好".getBytes());
int len=in.read(b);
回复 使用道具 举报
最好在 ;
out.flush();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马