1:
TCP编程(一对多):
服务器端:
package com.sqtoon.socket.tcp; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class TcpSocketServer { public static final int TCP_PORT = 8888; public static void main(String[] args) { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(TCP_PORT); System.out.println("启动服务器, 等待客户端连接..."); while (true) { final Socket socket = serverSocket.accept(); new Thread(new Runnable() { DataInputStream dataInputStream = null; DataOutputStream dataOutputStream = null; @Override public void run() { try { while (true) { dataInputStream = new DataInputStream(socket.getInputStream()); String msg = dataInputStream.readUTF(); // 接收客户端消息 System.out.println("接收到Client发送过来的消息: " + msg); dataOutputStream = new DataOutputStream(socket.getOutputStream()); dataOutputStream.writeUTF("服务器已处理消息: " + msg); // 返回给客户端消息 } } catch (Exception e) { e.printStackTrace(); } finally { try { dataInputStream.close(); dataOutputStream.close(); socket.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }).start(); } } catch (Exception e) { e.printStackTrace(); } finally { try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
客户端:
package com.sqtoon.socket.tcp; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.UUID; public class TcpSocketClient { private static final String uuid = UUID.randomUUID().toString(); public static void main(String[] args) { Socket socket = null; DataOutputStream dataOutputStream = null; DataInputStream dataInputStream = null; try { socket = new Socket("127.0.0.1", TcpSocketServer.TCP_PORT); while (true) { dataOutputStream = new DataOutputStream(socket.getOutputStream()); dataOutputStream.writeUTF(uuid + "这是客户端发给服务器的消息..." + System.currentTimeMillis()); dataInputStream = new DataInputStream(socket.getInputStream()); String msg = dataInputStream.readUTF(); System.out.println("接收服务器返回的消息: " + msg); Thread.sleep(1000 * 3); } } catch (Exception e) { e.printStackTrace(); } finally { try { dataOutputStream.close(); dataInputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
2:
UDP编程(一对一):
服务器端:
package com.sqtoon.socket.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; public class UdpSocketServer { public static final int UDP_PORT = 6666; public static final String CHATSET = "UTF-8"; public static void main(String[] args) { DatagramSocket datagramSocket = null; try { datagramSocket = new DatagramSocket(UDP_PORT); byte[] buf = new byte[0]; DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); while (true) { buf = new byte[UdpSocketClient.BUF_LENGTH]; datagramPacket.setData(buf); datagramSocket.receive(datagramPacket); String msg = new String(buf, CHATSET); System.out.println("接收到客户端发送的消息: " + msg); datagramPacket.setSocketAddress(new InetSocketAddress("127.0.0.1", 5555)); datagramPacket.setData(("服务器处理的消息: " + msg).getBytes(CHATSET)); datagramSocket.send(datagramPacket); datagramPacket.setData(buf); } } catch (Exception e) { e.printStackTrace(); } finally { datagramSocket.close(); } } }
客户端:
package com.sqtoon.socket.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; public class UdpSocketClient { public static final int UDP_PORT = 5555; public static final int BUF_LENGTH = 1024; public static void main(String[] args) { DatagramSocket datagramSocket = null; try { datagramSocket = new DatagramSocket(UDP_PORT); byte[] buf = new byte[0]; DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); while (true) { buf = "客户端的消息".getBytes(UdpSocketServer.CHATSET); datagramPacket.setData(buf); datagramPacket.setSocketAddress(new InetSocketAddress("127.0.0.1", UdpSocketServer.UDP_PORT)); datagramSocket.send(datagramPacket); buf = new byte[BUF_LENGTH]; datagramPacket.setData(buf, 0, buf.length); datagramSocket.receive(datagramPacket); String msg = new String(buf, UdpSocketServer.CHATSET); System.out.println("接收到服务器端返回的消息: " + msg.length() + msg); Thread.sleep(1000 * 2); } } catch (Exception e) { e.printStackTrace(); } finally { datagramSocket.close(); } } }
相关推荐
TCP/UDP socket 调试工具 TCP/UDP socket 调试工具 SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所...
SocketTool调试工具官方版是一款网络TCP/UDP通信调试工具。SocketTool调试工具最新版可以有效地帮助网络管理员检测各种网络通信状永久,集成了TCP服务器/客户端、UDP服务器/客户端和UDP广播/组播等功能。SocketTool...
基于TCP协议的Socket编程 ① 创建TCP服务端步骤: a) 创建一个ServerSocket对象 b) 调用accept()方法接受客户端请求 c) 从Socket中获取I/O流 d) 对I/O流进行读写操作,完成与客户端的交互 e) 关闭I/O流和...
网络编程Socket(基于TCP/UDP)的Demo,基于VS2013编译,最简单的示例
socket(TCP/UDP)编程源码,socket(TCP/UDP)编程源码,socket(TCP/UDP)编程源码
该代码可以实验服务器一对一处理客户机的信息,逆序送回,也可以一对多处理客户机信息,即迭代以及并发处理,最后还可以模拟UDP的多人聊天室,有异常捕捉以及消息互通
SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信状况。全面集成 TCP...
SocketTool调试工具是一款网络TCP/UDP通信调试工具,可以有效地帮助网络管理员检测各种网络通信状永久,集成了TCP服务器/客户端、UDP服务器/客户端和UDP广播/组播等功能,可以帮助网络编程人员、网络维护人员检查所...
TCP/UDP调试助手程序,可以进行网络编程的调试和测试。
TCP/UDP 调试工具 v2.2 可以自由的建立tcp/udp测试服务器,反馈接受的所有信息,支持发送,测试socket网络程序使用。操作简单,适合初学者、
基于C#语言的通信编程资料,浅析TCP/UDP在C#中的实现,以及SOCKET套接字的分析
Windows下基于TCP和UDP的Socket编程,分别有服务端和客户端,好用。
C#通信编程整理(Socket,ActiveMQ,TCP/UDP通讯等)C#通信编程整理
C# socket编程 上位机一键修改plc参数 汇川TCP/UDP socket通讯示例,亲测可用,适合学习 通讯相关程序写成库,都是源码,可以直接复用 关键代码注释清晰 支持汇川全系列plc的modbusTCP通讯, 可以导入导出变量表
编程开发,适合初学者学习Socket编程的Tcp和Udp协议的Demo
SocketTool调试软件是一款网络TCP/UDP通信调试工具 本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。 它可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信状况。 ★ 全面集成 ...
实现TCP和UDP的一个简单的Socket编程 TCP:android实现客户端 Java实现服务器端 UDP:android实现服务器端 Java实现客户端
udp和tcp详解,socket网络编程,有详细的例子
Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言...
Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言...