Socket通信机制:
使用Socket进行Client/Server程序设计一般连接过程如下:
1.创建Socket。
2.打开连接到Socket的输入/输出流。
3.按照一定的协议对Socket进行读/写操作。
4.关闭Socket。
注:第3步是程序员来调用Socket和实现程序功能的关键步骤,其他3步在各种程序中基本相同。
简易通信程序设计:
①、客户端 ②、服务端
二、客户端Socket
public class TalkClient {
public static void main(String[] args) {
try{
Socket socket=new Socket("127.0.0.1", 4700);
//向本机的4700端口发送求情
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader堆箱,用来接收我们输入的Client消息
PrintWriter pt=new PrintWriter(socket.getOutputStream());
//由Socket堆箱得到输出流
BufferedReader bb=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象输入流
String line;
line=br.readLine();
while(!line.equals("byebye")){
//若从标准系统输入读入的字符串为"byebye",则循环停止
pt.println(line);
pt.flush();//刷新输出流,使Server可以马上收到字符串
System.out.println("客户端:"+line);
System.out.println("服务端:"+bb.readLine());
line=br.readLine();//从系统标准输入读入字符串
}
bb.close();//关闭输入流
pt.close();//关闭输出流
socket.close();//关闭Socket
}catch(Exception e){
System.out.println("错误"+e);
}
}
}
三、服务端ServerSocket(重新创建一个JAVA工程)
public class TalkServer {
public static void main(String[] args) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
//创建一个ServerSocket监听端口为4700的客户请求
}catch(Exception e){
System.out.println("不能监听:"+e);
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客户请求,
//求情到来就产生一个Socket,并继续执行
}catch(Exception e){
System.out.println("错误:"+e);
}
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedReader bb=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pt=new PrintWriter(socket.getOutputStream());
System.out.println("客户端:"+bb.readLine());
//在标准输入上打印出从客服端读入的字符串
String line;
line=br.readLine();
//从标准输入读入一行字符串
while(!line.equals("byebye")){
pt.println(line);
pt.flush();
System.out.println("服务端:"+line);
//在标准输入上打印出读入的字符串
System.out.println("客户端:"+bb.readLine());
//从Client读入一行字符串,并打印在标准输出上
line=br.readLine();
}
bb.close();
pt.close();
socket.close();
server.close();
}catch(Exception e){
System.out.println("错误"+e);
}
}
}