黑马程序员技术交流社区
标题:
还是网络编程的问题。。。
[打印本页]
作者:
魏亮
时间:
2012-10-29 17:55
标题:
还是网络编程的问题。。。
import java.net.*;
import java.io.*;
class ServerDemo
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(11111);
Socket s = ss.accept();
/*
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while ((line = bufIn.readLine())!=null)
{
System.out.println(line);
}
为什么不行?? 客户端发来的请求数据头后面不是有空行吗?应该可以读到null,然后结束循环的,怎么用这个试了好几遍都不行
*/
System.out.println(s.getInetAddress().getHostAddress());
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
//用字节流虽然不是每次都成功,但是可以成功
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("你好,客户端");
s.close();
ss.close();
//System.out.println("Hello World!");
}
}
作者:
李靖
时间:
2012-10-29 18:28
你用字节流是因为你只读了1024个字节,如果等效为字符流应是如下:
int len =0;
while((len = in.read(buf))!=-1){
System.out.println(new String(buf,0,len));
}
这样就好出现阻塞了
作者:
魏亮
时间:
2012-10-30 07:50
问题不在字节流,我感觉数据头信息不多就没写循环,主要是在字符流,dos里接收到了请求端 数据头,就停住了,光标闪烁。。。是不是字符流没读到结束标记???
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2