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:

最新文章

  1. Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain
  2. JVM基本原理
  3. 闭包(closure)
  4. Semantic-UI和其他几个前端框架
  5. C# 3.0 扩展方法[转载]
  6. mysql sql语句使用技巧
  7. 自己编写的sublime text 3 插件
  8. lightoj1281快速幂+数学知识
  9. ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler)
  10. 第2章 Java并发机制的底层实现原理
  11. 内置函数_range()
  12. cocos2d-x JS 加载播放Studio帧动画的两种方法
  13. windows下解决python输出utf-8中文
  14. SSL & TLS & STARTTLS
  15. ubuntu16.04下编译ceres-solver
  16. 【LabVIEW技巧】LabVIEW中的错误1
  17. 探索"+"的原本
  18. python3----生成器generator(yield)
  19. ubuntu jdk 1.7 安装
  20. elastic(6) mget

热门文章

  1. 查看正在执行的sql语句
  2. nuget命令的用法:
  3. 娓娓道来c指针 (4)解析c的声明语句
  4. 铁通网络没有一个真实的公网IP,NAT转换能不能解决?
  5. 基于Python Tornado的在线问答系统
  6. Swift 与 Object-C 交互 (Swift版本为:1.2)
  7. window.onunload | window.onbeforeunload
  8. C#:数学运算(待补充)
  9. 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
  10. C++的引用与const指针的关系以及各种传递方式