1、简单的例子,server端只负责接收数据,client端只负责发送数据。
package com.test.tcpsimple; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; public class TCPSimpleServerTest { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { System.out.println("服务端启动成功,建立监听客户端消息。。。"); ServerSocket server = null; try { // 创建一个ServerSocket在端口8888监听客户请求 server = new ServerSocket(8888); } catch (Exception e) { e.printStackTrace(); } try { Socket socket = null; while (true) { try { // 由Socket对象得到输入流,并构造相应的BufferedReader对象 // 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket对象,并继续执行 socket = server.accept(); } catch (Exception e) { e.printStackTrace(); } BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println( sdf.format(new Date()) + " 接收到客户端消息:" + br.readLine()); socket.close(); // 关闭Socket br.close(); // 关闭Socket输入流 } } catch (Exception e) { e.printStackTrace(); } finally { server.close(); // 关闭ServerSocket } } catch (Exception e) { e.printStackTrace(); } } }
package com.test.tcpsimple; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; public class TCPSimpleClientTest { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { System.out.println("客户端启动成功!"); System.out.print("请输入需要发送给服务端的消息:"); // 由系统标准输入设备构造BufferedReader对象 BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in)); // 从系统标准输入读入一字符串 String readline = brIn.readLine(); // 若从标准输入读入的字符串为 "bye"则停止循环 while (!readline.equals("bye")) { // 向本机的8888端口发出客户请求 Socket socket = new Socket("127.0.0.1", 8888); PrintWriter pw = new PrintWriter(socket.getOutputStream()); // 将从系统标准输入读入的字符串输出到Server pw.println(readline); // 刷新输出流,使Server马上收到该字符串 pw.flush(); // 在系统标准输出上打印读入的字符串 System.out.println(sdf.format(new Date()) + " 向服务端发送消息:" + readline); System.out.println(); System.out.print("请输入需要发送给服务端的消息:"); pw.close(); // 关闭Socket输出流 socket.close(); // 从系统标准输入读入一字符串 readline = brIn.readLine(); } // 继续循环 } catch (Exception e) { e.printStackTrace(); } } }
2、扩展的例子,server端监听数据,监听到后,可以给clinet端进行回复,client端发送数据,但是也可以接收都server端的回复
package com.test.tcp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; public class TCPServerTest { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { System.out.println("服务端启动成功,建立监听客户端消息。。。"); ServerSocket server = null; try { // 创建一个ServerSocket在端口8888监听客户请求 server = new ServerSocket(8888); } catch (Exception e) { e.printStackTrace(); } try { Socket socket = null; while (true) { try { // 由Socket对象得到输入流,并构造相应的BufferedReader对象 // 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket对象,并继续执行 socket = server.accept(); } catch (Exception e) { e.printStackTrace(); } BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println( sdf.format(new Date()) + " 接收到客户端消息:" + br.readLine()); System.out.print("请输入返回给客户端的响应信息:"); String line; // 由Socket对象得到输出流,并构造PrintWriter对象 PrintWriter pw = new PrintWriter(socket.getOutputStream()); // 由系统标准输入设备构造BufferedReader对象 BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in)); // 在标准输出上打印从客户端读入的字符串 // 从标准输入读入一字符串 line = brIn.readLine(); // 如果该字符串为 "bye",则停止循环 if(line.equals("bye")); // 向客户端输出该字符串 pw.println(line); // 刷新输出流,使Client马上收到该字符串 pw.flush(); // 在系统标准输出上打印读入的字符串 System.out.println( sdf.format(new Date()) + " 向客户端发送响应:" + line); System.out.println(""); socket.close(); // 关闭Socket pw.close(); // 关闭Socket输出流 br.close(); // 关闭Socket输入流 } } catch (Exception e) { e.printStackTrace(); } finally { server.close(); // 关闭ServerSocket } } catch (Exception e) { e.printStackTrace(); } } }
package com.test.tcp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; public class TCPClientTest { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { // 向本机的8888端口发出客户请求 System.out.println("客户端启动成功!"); System.out.print("请输入需要发送给服务端的消息:"); // 由系统标准输入设备构造BufferedReader对象 BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in)); // 从系统标准输入读入一字符串 String readline = brIn.readLine(); // 若从标准输入读入的字符串为 "bye"则停止循环 while (!readline.equals("bye")) { Socket socket = new Socket("127.0.0.1", 8888); PrintWriter pw = new PrintWriter(socket.getOutputStream()); // 将从系统标准输入读入的字符串输出到Server pw.println(readline); // 刷新输出流,使Server马上收到该字符串 pw.flush(); // 在系统标准输出上打印读入的字符串 System.out.println(sdf.format(new Date()) + " 向服务端发送消息:" + readline); BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(sdf.format(new Date()) + " 接收到服务端反馈消息:" + is.readLine()); System.out.println(); System.out.print("请输入需要发送给服务端的消息:"); is.close(); pw.close(); // 关闭Socket输出流 socket.close(); // 从系统标准输入读入一字符串 readline = brIn.readLine(); } // 继续循环 } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
java网络通信,使用TCP协议,代码可直接导入运行。完整的UI界面方便大家学习
1、本项目则是使用Java实现TCP的Socket网络通信,包含C/S软件架构的程序设计,偏向实践,更加有趣! 2、实现简单有趣的“创意”聊天机器人。 3、建立通信规则: Server和Client之间需要约定相同的规则,保证正常通信...
自已写的通信功能,两个机器互发信息,东西虽小,技术却一点没少,新手学习很方便
Java网络编程之TCP协议下—上传文件到服务器程序,欢迎大家下载和知道
通过TCP协议开发局域网监测软件。
java TCP网络通信聊天室(源码+演示视频+报告论文6000字)
文件传输是应用层中的一个主要协议,负责将主机中文件从一台机器送到另一台机器。传输协议采用客户、服务器的工作模式...利用Java网络编程技术、多线程技术、数据流等技术实现客户端与服务器端的双向各种信息的传递 。
JAVA TCP-IP Socket网络通信编程研究.pdf
java 网络编程 基于TCP协议的Socket通信ppt
基于JAVA和TCP SOCKET实现的P2P的局域网即时通信系统
主要介绍了Java网络编程之TCP通信完整代码示例,具有一定借鉴价值,需要的朋友可以了解下。
主要采用对接文档是 SUN2000L V100R001 MODBUS 接口定义描述 采用netty 4.1.22.Final 版本作为高并发的底层开发依赖,通过TCP协议建立服务器与多个客户端的长链接通信,经测试可达1w链接。 同时提供web页面管理接口...
在该范围内使用多线程机制循环创建客户端套接字对象,对某一地址(段)的主机端口进行扫描,若套接字没有发生异常,说明该端口打开并提供服务,返回该开放端口的类型(如UDP端口还是TCP端口)。 2.3 采用Java网络...
TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础。定义了电子设备连入因特网的规范。而Socket通信就是基于TCP/IP协议的一直通信机制。TCP/IP网络中最常用的传输协议TCP和UDP。传输层通常以TCP和UDP...
Java窗口tcp通信,实现用户端和服务端的信息传输
代码实现了基于TCP/IP协议的网络通信功能,包括服务器端和客户端的设计与实现。 **开题报告**:概述了项目的背景、意义、研究目标和主要研究内容,为项目的顺利开展提供了明确的指导和规划。 本资源适合作为高等...
2. 熟悉教材第二章的基本概念二、 实验内容1. 掌握基于 TCP 协议与 Socket 接口的网络通信编程的流程;2. 使用 Java 实现基于 TCP 协议
java开发的基于TCP/IP协议的网络编程聊天室项目,结合几乎所有Java高级特效的知识,主要用于局域网之间的无网络通信(插着网线不能上网那种)局限是只能发文字
基于TCP/IP协议的Socket编程,JAVA实现详解
该系统基于客户端和服务端之间的互联,提供了一系列的客户端和服务端间的通信方式,包括TCP协议,UDP协议,并通过自定义通信协议,实现客户端和服务端之间的数据传输和处理。该系统可用于多种领域,包括游戏、即时...