【CSDN常见问题解答】Java Socket通信(TCP/UDP)
来源:互联网 发布:弱点 知乎 编辑:程序博客网 时间:2024/05/22 06:38
以前写过一个局域网通信工具,很简单的。但是这系列文章是用来解决新手问题的。所以打算写个最简单的demo。
废话少说,先来个基于TCP的。
上server端代码:
import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket; public class MyServiceSocket { public static void main(String[] args) { try { // 1.建立一个服务器socket对象 ServerSocket ss = new ServerSocket(8888); // 2.等待客户端连接 Socket s = ss.accept();// 等到客户端连接 // 通过输入输出流操作数据 InputStream is = s.getInputStream(); DataInputStream dis = new DataInputStream(is); System.out.println(dis.readUTF()); OutputStream out = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(out); dos.writeUTF("hello client!"); // 4.关闭数据流 dis.close(); is.close(); s.close(); ss.close(); } catch (Exception e) { e.printStackTrace(); } } }
客户端代码:
import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket; public class MyClient { public MyClient() { } public static void main(String[] args) { try { // 1.建立Socket对象 Socket client = new Socket("localhost", 8888); // 2.通过socket对象的输入输出流操作数据 OutputStream out = client.getOutputStream(); DataOutputStream dos = new DataOutputStream(out); dos.writeUTF("hello service!"); InputStream is = client.getInputStream(); DataInputStream dis = new DataInputStream(is); System.out.println(dis.readUTF()); System.out.println(client.getInetAddress()); System.out.println(client.getLocalPort()); System.out.println(client.getLocalSocketAddress()); System.out.println(client.getChannel()); // 3.关闭连接 dos.close(); out.close(); client.close(); } catch (Exception e) { e.printStackTrace(); } } }
再来一个基于UDP的。
server端代码:
import java.net.DatagramPacket;import java.net.DatagramSocket; public class MyUDPServer { public static void main(String[] args) { byte b[] = new byte[100]; try { DatagramPacket dp = new DatagramPacket(b, b.length); DatagramSocket ds = new DatagramSocket(8888); ds.receive(dp); String s = "你发的数据是:" + new String(b).trim(); System.out.println(s); dp = new DatagramPacket(s.getBytes(), s.getBytes().length, dp.getAddress(), dp.getPort()); ds = new DatagramSocket(); ds.send(dp); } catch (Exception e) { e.printStackTrace(); } }}
Client端:
import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress; /** * 类说明:UDP数据包 udp 总结 1.将要发的数据先进行打包 使用的类是:DatagramPacket 2.发送打包好的数据 * 使用的类是:DatagramSocket (发送数据包) 注意事项:发送数据报是要知道目的地和目的端口号 * 所以要采用DatagramPacket(byte[] buf, int length,InetAddress address,int port) * 因为发送的时候已经知道端口号 故发送DatagramSocket()不需要再写参数了 * * 接收数据包: 1.接收的时候要将接受的数据打包DatagramPacket(byte[] buf, int length) * 2.接收的时候要知道重那个端口接收 故使用的时候要DatagramSocket(int prot); * */public class MyUDPClient { public static void main(String[] args) { byte b[] = "hello udp server!".getBytes(); try { InetAddress add = InetAddress.getByName("localhost"); DatagramPacket dp = new DatagramPacket(b, b.length, add, 8888); DatagramSocket ds = new DatagramSocket(); ds.send(dp); b = new byte[100]; dp = new DatagramPacket(b, b.length); ds.receive(dp); System.out.println(new String(b).trim()); } catch (Exception e) { e.printStackTrace(); } }}
- 【CSDN常见问题解答】Java Socket通信(TCP/UDP)
- java socket通信 TCP UDP
- Java Socket通信(TCP/UDP)
- Java Socket通信及TCP/UDP实现
- socket通信,tcp,udp通信
- php socket通信(tcp/udp)
- socket tcp/ip udp通信
- SOCKET通信程序TCP/UDP
- Android Socket UDP,TCP通信
- Qt Socket通信(UDP&TCP)
- 使用JAVA实现Socket通信,TCP、UDP简析。
- 使用JAVA实现Socket通信,TCP、UDP简析。
- Java Socket实现基于TCP和UDP多线程通信
- JAVA socket实现TCP/UDP的多线程通信
- Java Socket实现基于TCP和UDP多线程通信
- Java Socket实现基于TCP和UDP多线程通信
- Java Socket实现基于TCP和UDP多线程通信
- JAVA Socket编程学习4--TCP和UDP多线程通信
- java农历/旧历的计算代码
- ORA-01950: 表空间'USERS'中无权限
- MTK LCD+KEYPAD背光驱动
- 面向对象的3个基本要素和5个基本设计原则(整理)
- 程序中unicode与多字节字符集的相关问题
- 【CSDN常见问题解答】Java Socket通信(TCP/UDP)
- C语言中结构体在函数中的应用
- Sicily 1500. Prime Gap
- NODEjs完整项目实践
- Delphi7 中类说明
- 网络安全技术简介
- C语言查看内存数据 打开内存窗口
- 基于visual Studio2013解决C语言竞赛题之1036递归求值
- Spring的声明式事务管理<tx:advice/> 有关的设置