Socket网络编程 客户端与服务端通信流程

来源:互联网 发布:淘宝评论上穿不了照片 编辑:程序博客网 时间:2024/04/29 12:35
 客户端与服务端通信流程
1>客户端向服务端发送基于某种协议的
  请求,服务端接收该请求。
2>服务端解析请求内容,并且处理相应
  业务。返回给客户端相应的响应信息。
3>客户端接收服务端返回的响应,并且
  对响应进行解析,获取响应数据,吧
  响应数据呈现到客户端界面中。
  
如何基于Socket进行客户端服务端编程?

什么是Socket?
套接字。是Java中的一个用于网络通讯
的类型。封装了IP地址及端口号。
和connect的行为方法。我们可以调用
方法与服务端建立连接。


Socket编程基本架构:
客户端服务端的基本通信:

服务端:
ServerSocket ss=new ServerSocket(8888);
//接收客户端的连接请求
Socket socket=ss.accept(); 
socket.getOutputStream();
socket.getInputStream();

客户端:
String ip="172.60.1111";
int port=8888;
Socket socket=new Socket(ip, port);
socket.getOutputStream();
socket.getInputStream();
------------------------------------------------------------------------------------------------------
/**
 * 服务端程序
 */
public class SocketServer {
public static void main(String[] args) {
//创建ServerSocket 接收客户端的连接
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("服务端已启动.....");
Socket socket=ss.accept();
//打印IP地址
System.out.println(socket.getInetAddress());
//连接建立成功  socket
DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
dos.writeUTF("请问要点什么?");
dos.flush();
while(true){
//读取客户端的回答
String str=dis.readUTF();
if(str.equals("不吃了!")){
dos.writeUTF("一路好走!");
dos.flush();
break;
}
dos.writeUTF("木有"+str+", 换一个?");
dos.flush();
}
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
-----------------------------------------------------------------------------------------------
/**
 * 客户端
 */
public class SocketClient {
public static void main(String[] args) {
//连接服务端
try {
String ip="172.60.11.11";
//当new时 就会创建连接
Socket socket = new Socket(ip, 8888);
System.out.println("连接创建成功");
//接收服务端写给客户端的数据:
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
Scanner console = new Scanner(System.in);
while(true){
String str=dis.readUTF();
System.out.println("Server:"+str);
if(str.equals("一路好走!")){
break;
}
//使用scanner 获取用户数据 并且写给服务端
String line=console.nextLine();
dos.writeUTF(line);
dos.flush();
}
dis.close();
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
------------------------------------------------------------------------------------------------
0 0
原创粉丝点击