TCP通信服务端及客户端代码
2024-08-25 08:09:45
Java TCP通信使用的是Socket(客服端)和ServerSocket(服务端),具体代码如下。
server端代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket; public class TcpService {
public static void main(String[] args) throws Exception {
//建立服务器端ServerSocket对象只需绑定一个端口
ServerSocket listen = new ServerSocket();
Socket client = null;
Boolean flag = true;
while(flag){
System.out.println("Server-->: ");
client = listen.accept();//通过accept()方法得到连接到次服务器端口对应的客服端Socket
new Thread(new ThreadServer(client)).start();
} listen.close();
}
}
class ThreadServer implements Runnable{
private Socket client; public ThreadServer(Socket client){
this.client = client;
} @Override
public void run() {
BufferedReader buf = null;
PrintStream out = null;
try{
out = new PrintStream(this.client.getOutputStream());
buf = new BufferedReader(new InputStreamReader(this.client.getInputStream())); boolean flag = true;
while(flag){
String str = buf.readLine(); if(null == str){
flag = false;
}else{
if("bye".equals(str)){
flag = false;
}else{
str = "Respone to client by server:" + str + "\n";out.write(str.getBytes());
}
}
}
this.client.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
Client端代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket; public class TcpClient {
public static void main(String[] args)throws IOException{
//建立客服端Socket,需写入服务器端主机地址以及服务端口
Socket client = new Socket("localhost",9999);
BufferedReader buf = null;
PrintStream out = null;
BufferedReader input = null;
//键盘录入
input = new BufferedReader(new InputStreamReader(System.in));
//从服务器端得到的输入流
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
//输出
out = new PrintStream(client.getOutputStream());
//建立标志,用于判断结束会话
boolean flag = true;
while(flag){
System.out.print("Input:");
String str = input.readLine();
out.println(str); if("bye".equals(str)){
flag = false;
}else{
String echo = buf.readLine();
System.out.println(echo);
}
}
buf.close();
client.close();
}
}
测试:
需先将服务器端运行开启,之后才能运行客户端,结果如下:
服务器端:
Server-->:
Server-->:
客户端:
Input:hello world!
Respone to client by server:hello world!
Input:
最新文章
- Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain
- JVM基本原理
- 闭包(closure)
- Semantic-UI和其他几个前端框架
- C# 3.0 扩展方法[转载]
- mysql sql语句使用技巧
- 自己编写的sublime text 3 插件
- lightoj1281快速幂+数学知识
- ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler)
- 第2章 Java并发机制的底层实现原理
- 内置函数_range()
- cocos2d-x JS 加载播放Studio帧动画的两种方法
- windows下解决python输出utf-8中文
- SSL &; TLS &; STARTTLS
- ubuntu16.04下编译ceres-solver
- 【LabVIEW技巧】LabVIEW中的错误1
- 探索";+";的原本
- python3----生成器generator(yield)
- ubuntu jdk 1.7 安装
- elastic(6) mget