黑马程序员技术交流社区
标题:
求解!
[打印本页]
作者:
忄雾飞扬
时间:
2013-10-29 23:33
标题:
求解!
本帖最后由 忄雾飞扬 于 2013-10-30 09:05 编辑
import java.io.*;
import java.net.*;
//为什么 会一直处于阻塞状态呢?
//昨天晚上我自己调试找到了阻塞的地方在哪了,但解决不了?
class UserThread implements Runnable
{
private Socket s;
UserThread(Socket s){
this.s = s;
}
public void run(){
try
{
for (int x = 0;x<3 ;x++ )
{
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + "come in !!!");
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufIn.readLine();
System.out.println("名字发过来了");//就是这,为什么readLine()没有读到信息?
BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
if(name == null)
break;
String line = null;
boolean flag = false;
while((line = bufr.readLine())!=null){
if(line.equals(name)){
flag = true;
break;
}
}
if(flag){
System.out.println(name+",已登录");
pw.println("欢迎"+name+"的归来");
break;
}
else
{
System.out.println(name+",尝试登录");
pw.println("鄙视"+name+"的盗号");
}
}
s.close();
}
catch (Exception e)
{
throw new RuntimeException();
}
}
}
class UserClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("127.0.0.1",10011);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
for(int x = 0; x < 3; x++){
String names = bufr.readLine();
if(names == null)
break;
pw.write(names);
System.out.println("内容发送");
String str = bufIn.readLine();
System.out.println(str);
if(str.contains("欢迎"))
break;
}bufr.close();
s.close();
}
}
class UserServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10011);
while(true){
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
作者:
王雷1
时间:
2013-11-1 21:01
真是没看懂你的代码 是怎么运行起来的。 没有公共类。 两个 普通类里都有main函数
作者:
杨增坤
时间:
2013-11-2 13:30
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufIn.readLine();
System.out.println("名字发过来了");//就是这,为什么readLine()没有读到信息?
因为你有的是缓冲流,你在读取后试着刷新一下,这样就能读取到了!
希望对你有帮助!
作者:
黄炳期
时间:
2013-11-2 13:38
帖子已重新分类,如果问题还没解决,可重新提问。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2