黑马程序员技术交流社区
标题:
在dos命令下两边都在等,在eclipse下两边都抛异常
[打印本页]
作者:
何羡玉
时间:
2013-4-28 08:35
标题:
在dos命令下两边都在等,在eclipse下两边都抛异常
本帖最后由 何羡玉 于 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();
}
}
作者:
殇_心。
时间:
2013-4-28 10:06
估计是运行环境的问题吧?
作者:
李慧声
时间:
2013-4-28 10:46
一点小问题,可能楼主在写的时候没有注意到,调整一下代码的顺序就好了。
客户端写法有问题,read方法是一个阻塞方法,你没有发过来数据,我就一直在那里等,知道你发过来为止。
在这个例子中,显然只有在客户端先向服务器发送数据之后,才会从服务器那里得到服务器发送过来的数据,
所以你只要把out.write("服务端,你好".getBytes());这句话放在read前面就OK了。
作者:
黑马-秦歌
时间:
2013-4-28 11:35
out.write("客户端,你好".getBytes());
int len=in.read(b);
作者:
黑马-秦歌
时间:
2013-4-28 11:36
最好在 ;
out.flush();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2