Socket TCP 协议实现服务端和客户端的简单通信
程序员文章站
2022-06-06 14:05:05
...
前言
服务器端启动后,等待客户端的调用,客户端输出信息到流,服务端接受并打印,之后服务端输出信息到流,客户端接受并打印。
代码
服务端代码
package com.bestcxx.mavenstu.mavenssh.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 基于 TCP 协议的
* 服务器端的Socket
* @author WuJieJecket
*
*/
public class ServerSocketAction {
public static void main(String[] args) {
try {
//创建服务器端的 Socket
@SuppressWarnings("resource")
ServerSocket serverSocket=new ServerSocket(10000);//0-65535,其中0-1023 是知名端口
//开始监听服务器端的 Socket,一旦客户端调用 socket 就被实例化
Socket socket=serverSocket.accept();
//获取客户端输入流
InputStream inputStream=socket.getInputStream();
byte b[]=new byte[1024];
StringBuffer sbf=new StringBuffer();
for(int n;(n=inputStream.read(b))!=-1;){
sbf.append(new String(b,0,n));
}
System.out.println("客户端传递进来的信息为:"+sbf.toString());
socket.shutdownInput();
//向客户端反馈信息
OutputStream outputStream=socket.getOutputStream();
PrintWriter printWriter=new PrintWriter(outputStream);
printWriter.write("我是服务端");
printWriter.flush();
socket.shutdownOutput();
//关闭资源
inputStream.close();
printWriter.close();
outputStream.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端代码
package com.bestcxx.mavenstu.mavenssh.socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端Socket
* @author WuJieJecket
*
*/
public class ClientSocketAction {
public static void main(String[] args) {
try {
Socket socket=new Socket("127.0.0.1",10000 );
OutputStream outputStream=socket.getOutputStream();
PrintWriter printWriter=new PrintWriter(outputStream);
printWriter.write("你好,我是客户端");
printWriter.flush();
socket.shutdownOutput();
//获取服务器端返回的信息
//获取服务端输入流
InputStream inputStream=socket.getInputStream();
byte b[]=new byte[1024];
StringBuffer sbf=new StringBuffer();
for(int n;(n=inputStream.read(b))!=-1;){
sbf.append(new String(b,0,n));
}
System.out.println("服务器端反馈进来的信息为:"+sbf.toString());
socket.shutdownInput();
//关闭资源
printWriter.close();
outputStream.close();
inputStream.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行
先运行 ServerSocketAction.java 的main 方法
再运行 ClientSocketAction.java 的main 方法
结果
ServerSocketAction控制台显示:
客户端传递进来的信息为:你好,我是客户端
ClientSocketAction 控制台显示:
服务器端反馈进来的信息为:我是服务端
下一篇: 英国*为13个云计算项目拨款500万英镑
推荐阅读
-
Java基于socket实现的客户端和服务端通信功能完整实例
-
Java基于socket实现的客户端和服务端通信功能完整实例
-
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
-
C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
-
C#基于TCP协议的服务器端和客户端通信编程的基础教程
-
详解Android 基于TCP和UDP协议的Socket通信
-
使用C#实现基于TCP和UDP协议的网络通信程序的基本示例
-
Android基于TCP协议的Socket通信简单实例
-
nodejs socket服务端和客户端简单通信功能
-
golang实现简单的udp协议服务端与客户端示例