socket双向通信
客户端
import
java.io.BufferedReader;
import
java.io.BufferedWriter;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
import
java.net.InetAddress;
import
java.net.Socket;
import
java.net.UnknownHostException;
public
class
Client {
public
static
void
main(String[] args) {
Socket socket =
null
;
BufferedReader in =
null
;
BufferedWriter out =
null
;
BufferedReader wt =
null
;
try
{
//创建Socket对象,指定服务器端的IP与端口
socket =
new
Socket(InetAddress.getLocalHost(),
8888
);
//获取scoket的输入输出流接收和发送信息
in =
new
BufferedReader(
new
InputStreamReader(socket.getInputStream()));
out =
new
BufferedWriter(
new
OutputStreamWriter(socket.getOutputStream()));
wt =
new
BufferedReader(
new
InputStreamReader(System.in));
while
(
true
) {
//发送信息
String str = wt.readLine();
out.write(str +
"\n"
);
out.flush();
//如果输入的信息为“end”则终止连接
if
(str.equals(
"end"
)) {
break
;
}
//否则,接收并输出服务器端信息
System.out.println(
"服务器端说:"
+ in.readLine());
}
}
catch
(UnknownHostException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
// 关闭资源
if
(out !=
null
) {
try
{
out.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(in !=
null
) {
try
{
in.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(wt !=
null
) {
try
{
wt.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(socket !=
null
) {
try
{
socket.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
}
}
服务端
import
java.io.BufferedReader;
import
java.io.BufferedWriter;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.OutputStreamWriter;
import
java.net.ServerSocket;
import
java.net.Socket;
public
class
Server {
public
static
void
main(String[] args){
Socket socket =
null
;
BufferedReader in =
null
;
BufferedWriter out =
null
;
BufferedReader br =
null
;
try
{
//创建服务器端套接字:指定监听端口
ServerSocket server =
new
ServerSocket(
8888
);
//监听客户端的连接
socket = server.accept();
//获取socket的输入输出流接收和发送信息
in =
new
BufferedReader(
new
InputStreamReader(socket.getInputStream()));
out =
new
BufferedWriter(
new
OutputStreamWriter(socket.getOutputStream()));
br =
new
BufferedReader(
new
InputStreamReader(System.in));
while
(
true
) {
//接收客户端发送的信息
String str = in.readLine();
System.out.println(
"客户端说:"
+ str);
String str2 =
""
;
//如果客户端发送的是“end”则终止连接
if
(str.equals(
"end"
)){
break
;
}
//否则,发送反馈信息
str2 = br.readLine();
// 读到\n为止,因此一定要输入换行符!
out.write(str2 +
"\n"
);
out.flush();
}
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
//关闭资源
if
(in !=
null
){
try
{
in.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(out !=
null
){
try
{
out.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(br !=
null
){
try
{
br.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(socket !=
null
){
try
{
socket.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步