ReverseService.java
import java.net.ServerSocket;
import java.net.Socket;
public class ReverseService{
public static void main(String[] args) throws Exception{
ServerSocket ss;
if(args.length<1){
ss=new ServerSocket(8002);
}else{
ss=new ServerSocket(Integer.parseInt(args[0]));
}
boolean bRunning=true;//绕开编译器问题
while(bRunning){
Socket s=ss.accept();//没有连接会阻塞,有连接继续执行下面代码重新建立个Socket等待另一个新连接
new Thread(new Servicer(s)).start();//执行会话线程的代码写在Runnable中,这里是Servicer对象包装s对象,这里是new一个个对象不是调用对象的一个方法,因此不能用Socket
}
ss.close();
}
}
TcpClient.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClient{
public static void main(String[] args) throws Exception{
if(args.length<2){
System.out.println("请输入ip和端口地址:");
return;
}
Socket s=new Socket(args[0],Integer.parseInt(args[1]));// 当Client程序需要从Server端获取信息及其他服务时,应创建一个Socket对象,Socket类型是一个,实现一个端口
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
BufferedReader brNet=new BufferedReader(new InputStreamReader(ips));
PrintWriter pw=new PrintWriter(ops,true);
BufferedReader brKeyBord=new BufferedReader(new InputStreamReader(System.in));//获取键盘输入的字节流
while(true){
String strword=brKeyBord.readLine();
pw.println(strword);//写入到服务器端
if(strword.equalsIgnoreCase("quit")){
break;
}
System.out.println(brNet.readLine());//获取的服务器数据打印
}
pw.close();
brNet.close();
brKeyBord.close();
s.close();
}
}