你是不是没有异常处理啊?import java.io.*;
import java.net.*;class ccc
{
public static void main(String[] agrs)throws Exception
{
ServerSocket s = new ServerSocket(7777);
Socket socket = s.accept();
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream())); String str = "";
while (true)
{
str = in.readLine();
if (str.equals("."))
break;
System.out.println(str);
}
}
}
import java.net.*;class ccc
{
public static void main(String[] agrs)throws Exception
{
ServerSocket s = new ServerSocket(7777);
Socket socket = s.accept();
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream())); String str = "";
while (true)
{
str = in.readLine();
if (str.equals("."))
break;
System.out.println(str);
}
}
}
import java.net.*;
import java.io.*;public class TestSocketClient{
public static void main(String[] args)
{
String serviceHost = "10.34.52.51";
int servicePort = 7777;
java.net.Socket socket=null;
BufferedReader reader=null;
PrintWriter out=null;
try
{
socket = new java.net.Socket(serviceHost,servicePort);
System.out.println("client socket: " + socket);
reader = new BufferedReader (new InputStreamReader(System.in));
out=new PrintWriter(socket.getOutputStream());
String str="";
do{
str=reader.readLine();
System.out.println("out:"+str);
out.println(str);
}while(!str.equals("."));
}
catch (IOException ex)
{
ex.printStackTrace();
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
reader.close();
out.close();
socket.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
}
DataInputStream in=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
这样就ok了。
DataInputStream 的方法也比较多。
readLine()在java 1.4中已不推荐使用。
建议使用readUTF();
java.net.SocketException: Connection reset by peer: JVM_recv in socket input stream readto:zhang21cnboy
请问你说的客户端socket没有设置超时是指什么?
我用了
Socket socket = s.accept();
socket.setSoTimeout(20000);
这样也不行
2、要定义好两端传输的数据格式。并检查每次发送接受都是严格按协议格式的。
程序本身没有问题!