package cn.wang;

import java.io.*;

import java.net.*;

public class Server {

static int num = 1;//客户端计数

public static void main(String[] args) {

// TODO Auto-generated method stub

ServerSocket server = null;

Socket client = null;

while(true) {

try {

server = new ServerSocket(4444);

//绑定端口,监听客户端

} catch (IOException e) {

// TODO Auto-generated catch block

System.out.println("Error:"+e);

}

try {

client = server.accept();

//与客户端建立连接

} catch (IOException e) {

// TODO Auto-generated catch block

System.out.println("接受请求失败!");

System.exit(-1);

}

System.out.println("Client["+Server.num+"]登录...");

ServerThread st = new ServerThread(client);

Thread t= new Thread(st);

//监听到客户端,为他创建线程,主程序返回继续监听

t.start();

try {

server.close();

} catch (IOException e) {

// TODO Auto-generated catch block

System.out.println("关闭失败!");

}

num++;

}

}

public static class ServerThread implements Runnable{

private Socket client;

public ServerThread(Socket client) {

this.client = client;

}

public void run() {

try {

BufferedReader is = new BufferedReader(new InputStreamReader(client.getInputStream()));

//将从客户端接受的信息存放到缓存is中

PrintWriter os = new PrintWriter(client.getOutputStream());

//从socket获取客户端的输出流,通过os向客户端发送消息

BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));

//建立缓存,为后面输入数据做准备

System.out.println("Client:"+is.readLine());

//打印客户端发来的信息

String inputString = sin.readLine();

//从键盘输入信息,存放在inputString中

while(inputString!=null&&inputString.trim().equals("quit")){

os.println(inputString);

//os.println向客户端发送消息,内容是inputString

os.flush();

//刷新输出流,使client马上得到该信息

System.out.println("Server发送的信息为:"+inputString);

//打印服务器向客户端发送的信息

System.out.println("Client发来的信息为:"+is.readLine());

//打印客户端发来的信息

inputString = sin.readLine();

//继续读入数据

}

os.close();//关闭Socket输出流

is.close();//关闭Socket输入流

client.close();//关闭Socket

System.out.println("通信结束!");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

java socket 通信协议_java网络通信(基于TCP协议可靠通信的socket编程)相关推荐

  1. day26-2 基于TCP协议的套接字编程

    目录 基于TCP协议的套接字编程 套接字 套接字工作流程 基于TCP协议的套接字编程(简单) 服务端 客户端 基于TCP协议的套接字编程(循环) 服务端 客户端1 客户端2 基于TCP协议的套接字编程 ...

  2. python中基于tcp协议的通信(数据传输)

    tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据 ...

  3. 电子词典(基于TCP协议多进程通信和数据库)

    项目:电子词典 项目要求: 登录注册功能,不能重复登录,重复注册.用户信息也存储在数据库中. 单词查询功能 历史记录功能,存储单词,意思,以及查询时间,存储在数据库 基于TCP,支持多客户端连接 采用 ...

  4. 基于TCP协议实现通信

    实现一个简单的从客户端发送一个消息到服务端的功能 public static void main(String[] args) throws IOException { ServerSocket se ...

  5. java plc通信协议_Java实现计算机与OMRONPLC串口通信.pdf

    Java实现计算机与OMRONPLC串口通信 · 84 · 工业仪表与 自动化装置 2010年第 1期 Java实现计算机与oMRONPLC串口通信 吴兴军.胡汉春 (北京西动车所:西南交通大学机械工 ...

  6. java socket 通信协议_java 基于TCP协议的Socket编程和通信

    java 基于 TCP 协议的 Socket 编程和通信 在网络通讯中,第一次主动发起通讯的程序被称作客户 端 (Client) 程序, 简称客户端, 而在第一次通讯中等待连接的 程序被称作服务器端 ...

  7. java socket发送定长报文_一个基于TCP协议的Socket通信实例

    原标题:一个基于TCP协议的Socket通信实例 1. 前言 一般接口对接多以http/https或webservice的方式,socket方式的对接比较少并且会有一些难度.正好前段时间完成了一个so ...

  8. Java学习系列(十六)Java面向对象之基于TCP协议的网络通信

    TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层). IP地址用于标识网络中 ...

  9. socket 网络通信(基于tcp协议)以及粘包解决方案

    socket 网络通信(基于tcp协议)以及粘包解决方案 参考文章: (1)socket 网络通信(基于tcp协议)以及粘包解决方案 (2)https://www.cnblogs.com/amiee- ...

最新文章

  1. Android之如何以最简单方式开启闪光灯
  2. hadoop运行中报错笔记
  3. r指引到文件夹_R语言中进行文件夹及文件夹内文件操作范例
  4. GetSafeHwnd()函数
  5. 批量插入数据到mysql_批量插入数据到 MySQL的几种方式
  6. mysql排序两位数_MySQL_Mysql row number()排序函数的用法和注意,虽然使用不多,但是也有情况 - phpStudy...
  7. oracle会闪,oracle闪来
  8. ajax header的bearer token验证
  9. Java基础知识盘点(二)- 集合篇
  10. 计算机二级b5纸是多大尺寸,两张b5纸是多大
  11. 蓝桥杯嵌入式比赛经验分享
  12. 为什么函数lamda显示权限不足_C++常用内置函数
  13. 【python博客爬虫】
  14. Js实现炫酷仿抖罗盘时钟------Sestid
  15. 智能小车寻迹c语言程序,智能小车循迹记时测速程序
  16. 创建mysql视图索引_mysql 创建索引和视图
  17. Dynamics 365 新建组织时一直提示识别不到Reporting Extensions
  18. java高级应用_Java高级应用简笔
  19. GPS定位系统(一)——介绍
  20. ElasticSearchTransportClient集成SearchGuard插件实现索引级别的权限管控

热门文章

  1. 展望二十一世纪第三个十年
  2. 裸眼 3D 是什么效果?
  3. Storm,Trident,Spark Streaming,Samza和Flink主流流处理框架比较
  4. 用Gogland开发Go程序
  5. redis事务原理,使用,详解
  6. 游戏数仓分析(二)SpringBoot项目对数据进行可视化展示
  7. 【Servlet】Session的特点和使用
  8. 基础补充和加强——希望对后来的人有所帮助
  9. Jedis与Redisson选型对比
  10. JUC原子类-数组类型(三)