//我按照我的教材上的程序写了一个双机通信的小程序,但是只能
//一个人说一句,就是说必须等待对方说了我才能说,我改了一下
// ,做成了多线程的,即同时接受和发送,但是这个线程有错误,
// 我不知道改怎么改。注释了的就是以前的只能单程通信。
//  以下是错误:
Mysocket.java:94: 需要 <标识符>
                str =in.readLine();//读客户端传送的字符
                    ^
Mysocket.java:95: 需要 <标识符>
                System.out.println(str); //显示字符串
                                  ^
Mysocket.java:99: 需要 <标识符>
               str=userin.readLine();
                  ^
Mysocket.java:100: 需要 <标识符>
              out.println(str); //向客户端发送消息
                         ^
Mysocket.java:193: 需要 <标识符>
                str =in.readLine();//读客户端传送的字符
                    ^
Mysocket.java:194: 需要 <标识符>
                System.out.println(str); //显示字符串
                                  ^
Mysocket.java:198: 需要 <标识符>
                str=userin.readLine();
                   ^
Mysocket.java:199: 需要 <标识符>
              out.println(str); //向客户端发送消息
                         ^
8 错误import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;public class MySocket extends Thread
{
public static final int port = 5000;
Socket s;
static ServerSocket Myserver;
public MySocket(Socket s)
{
this.s= s ;
}
public void run()
{
try
{
  String str ;
    System.out.println("网友 "+ s.getInetAddress() + "上线");

    InputStream fIn=s.getInputStream();  //从客户端接受流
    OutputStream fOut=s.getOutputStream();//向客户端发送流 
    
     InputStreamReader isr=new InputStreamReader(fIn); //从客户端接受流
     BufferedReader in=new BufferedReader(isr);   //从客户端接受流
     PrintStream out=new PrintStream(fOut);  //向客户端发送流
     InputStreamReader userisr=new InputStreamReader(System.in); //接受用户的输入数据流
    BufferedReader userin=new BufferedReader(userisr);   //接受用户的输入数据流     while(true)
    { 
  //     System.out.println("等待客户端的消息..."); 
  //      str=in.readLine();//读客户端传送的字符串
   //     System.out.println(str); //显示字符串
    //    if(str.equals("end"))break; //如果是end,则退出 
    //    System.out.print("给客户端发送:"); 
    //    str=userin.readLine();  
     //   out.println(str); //向客户端发送消息
     read myread = new read();
     write mywrite = new write();
     myread.start();
     mywrite.start();
        if(str.equals("end"))break; 
    } 
    s.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
  class read extends Thread
  {
     str =in.readLine();//读客户端传送的字符串
     System.out.println(str); //显示字符串
  }
   class write extends Thread
   {
       str=userin.readLine();  
      out.println(str); //向客户端发送消息
   }
static void server() throws IOException
{
   Myserver = new ServerSocket(5000);
   System.out.println("服务器已经启动,等待聊友上线");
     while(true)
     {  
 MySocket sock = new MySocket(Myserver.accept());
 sock.start();
 }
} public static void main(String[] args)throws IOException 
{
if(args.length ==0)
{
server();
}
else
{
client cc = new client(args[0]);
cc.start();
}
}}
  class client extends Thread
  {
InetAddress addr;
Socket socket;
InputStream fIn;
OutputStream fOut;
InputStreamReader isr;
BufferedReader in;
PrintStream out;
InputStreamReader userisr;
BufferedReader userin;
String str,name;

  
client(String name)
{
this.name = name;
try{ 
   addr=InetAddress.getByName("127.0.0.1");
   socket=new Socket(addr,5000); 
   System.out.println("你上线成功"+socket); 
   //获得对应socket的输入/输出流 
    fIn=socket.getInputStream(); 
    fOut=socket.getOutputStream(); 
   //建立数据流 
    isr=new InputStreamReader(fIn); 
   in=new BufferedReader(isr);   
   out=new PrintStream(fOut); 
   userisr=new InputStreamReader(System.in); 
   userin=new BufferedReader(userisr);  
}catch(Exception e)
{
e.printStackTrace();
}
}
public void run()
{
try
{
   while(true)
   { 
//     System.out.print("发送消息:"); 
//     str=name+":"+userin.readLine();  //读取用户输入的字符串
//     out.println(str);  //将字符串传给服务器端
//     if(str.equals("end"))break;  //如果是"end",就退出
//      System.out.println("等待服务器端消息..."); 
//      str=in.readLine();  //获取服务器获得字符串
//      System.out.println("服务器端字符:"+str); 
     read myread = new read();
        write mywrite = new write();
        myread.start();
        mywrite.start();
     if(str.equals("end"))break;
   } 
   socket.close(); //关闭连接 
}catch(Exception e)
{
e.printStackTrace();
}
      }
class read extends Thread
    {
     str =in.readLine();//读客户端传送的字符串
     System.out.println(str); //显示字符串
    }
    class write extends Thread 
    {
     str=userin.readLine();  
      out.println(str); //向客户端发送消息
    
    }
  }