Client 端:import java.io.*;
import java.net.*;
public class Client{
public static void main(String args[])throws Exception 
{

 Socket socket=new Socket("localhost",6735);
 
 InputStream is=socket.getInputStream();
 OutputStream os=socket.getOutputStream();
     DataOutputStream dos=new DataOutputStream(os);
     BufferedReader buf=new BufferedReader(new InputStreamReader(is));
     String str;
      dos.writeBytes("meng");
      dos.flush();
       str=buf.readLine();
      System.out.print(str);
      
      buf.close();
      dos.close();
      is.close();
      
}
server端:import java.io.*;
import java.net.*;
import java.util.*;
public class Server {public static void main(String args[]) throws IOException {
Server ms = new Server();
ServerSocket sSocket;
    sSocket = new ServerSocket(6735);

while(true){
Socket socket = sSocket.accept();
        InputStream stream = socket.getInputStream();
BufferedReader buf = new BufferedReader(new InputStreamReader(
stream));

        OutputStream os = socket.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);
String str;
    str=buf.readLine();
str=str+"chun";

dos.writeBytes(str);
dos.flush();
      dos.close();
      buf.close();


}
}
在client只读,server写;或者client 写,server端读,程序能正确运行。
但是client 同时读和写,server同时从客户端读和向客户端写就会出错: connection reset.
请指教~谢谢

解决方案 »

  1.   


    因为socket的缓存是以\n结束来清理缓存,发送数据.dos.writeBytes("meng"); 改成
    dos.writeBytes("meng\r\n"); 
    str=str+"chun"; 
    改成
    str=str+"chun\r\n"; 
      

  2.   


    PrintWriter pw=new PrintWriter(socket.getOutputStream);
    DataOuputStream dos=new DataOutputStream(socket.getOutputstream);dos.writebytes("meng") 换为pw.print("meng") 就行了。但是printwriter类的print方法只是打印,不是向服务器写数据,怎么能替换writebytes的功能呢? 
    为什么writebytes又不行呢?谢谢各位,我以及困惑几天了
      

  3.   


    PrintWriter pw=new PrintWriter(socket.getOutputStream);
    DataOuputStream dos=new DataOutputStream(socket.getOutputstream);dos.writebytes("meng") 换为pw.print("meng") 就行了。但是printwriter类的print方法只是打印,不是向服务器写数据,怎么能替换writebytes的功能呢? 
    为什么writebytes又不行呢?谢谢各位,我以及困惑几天了