菜鸟求帮忙(和 I/O 线程 有关 )
本帖最后由 kankanpian 于 2012-12-02 01:45:35 编辑
代码如下:
A:
import java.util.LinkedList;
public class ServerMain
{ public int duanKou;
public String zhuanTai;
public LinkedList<String> userList;
public static void main(String[] args)
{
ServerMain svm = new ServerMain();
Thread th1 = new InPutThread(svm);
th1.start();
}
}
a:
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import
java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class InPutThread extends Thread
{
private ServerMain serverMain;
private ServerSocket serverSocket;
private Socket socket;
public InPutThread(ServerMain serverMain)
{
this.serverMain = serverMain;
try
{
this.serverSocket = new ServerSocket(5000);
this.socket = serverSocket.accept();
}
catch (
IOException e)
{
e.printStackTrace();
}
}
private void getUserName() throws Exception
{
InputStream ipt = this.socket.getInputStream();
BufferedInputStream bfip = new BufferedInputStream(ipt);
byte[] bt = new byte[1000];
int length = 0;
while (-1 != (length = bfip.read(bt, 0, 1000)))
//先运行ServerMain 再运行ClientMain 程序运行到上面这行发生错误了?
/** 错误如下:
*
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at Sever.InPutThread.getUserName(InPutThread.java:51)
at Sever.InPutThread.run(InPutThread.java:69)
*
*
*/
{
String str = new String(bt, 0, length);
System.out.println(str);
}
}
@Override
public void run()
{
try
{
this.getUserName();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
B:
public class ClientMain
{
private String userName = "user1";
public String getUserName()
{
return userName;
}
public static void main(String[] args)
{
ClientMain clm = new ClientMain();
new OutPutThread(clm).start();
}
}
b:
import java.io.BufferedOutputStream;