//我按照我的教材上的程序写了一个双机通信的小程序,但是只能
//一个人说一句,就是说必须等待对方说了我才能说,我改了一下
// ,做成了多线程的,即同时接受和发送,但是这个线程有错误,
// 我不知道改怎么改。注释了的就是以前的只能单程通信。
// 以下是错误:
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); //向客户端发送消息
}
}
//一个人说一句,就是说必须等待对方说了我才能说,我改了一下
// ,做成了多线程的,即同时接受和发送,但是这个线程有错误,
// 我不知道改怎么改。注释了的就是以前的只能单程通信。
// 以下是错误:
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); //向客户端发送消息
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货