Socket通信
来源:互联网 发布:js 计算器 编辑:程序博客网 时间:2024/06/05 18:50
Socket通信分为两类:TCP和UDP。而TCP和UDP都分为两端。
一,TCP
1,服务器端
package com.jackie.day11;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class TCPServer { public static void main(String[] args) { ServerSocket ss = null; Socket s = null; PrintWriter pw = null; try { ss = new ServerSocket(8888); s = ss.accept();// 开始监听,一直阻塞程序,直到接收到了客户端的连接就会返回一个代表这个客户端的Socket System.out.println("客户端来了!"); pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); pw.println("客户端你好!"); pw.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if (pw != null) { pw.close(); } if (ss != null) { try { ss.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
2,客户端
package com.jackie.day11;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;import java.net.UnknownHostException;public class TCPClient { public static void main(String[] args) { Socket s = null; BufferedReader br = null; String str = null; try { s = new Socket("192.168.1.100", 8888); br = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8")); str = br.readLine(); System.out.println(str); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
二,UDP
1,发送端
package com.jackie.day11;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class UDPSender { public static void main(String[] args) { DatagramSocket ds = null; try { ds = new DatagramSocket();// 发包时不用指定端口号 String data = "UDP发送过来的数据!"; byte[] buf = data.getBytes(); // 创建一个要发送到指定IP地址的指定端口号上的包 DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(), 6666); ds.send(packet); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (ds != null) { ds.close(); } } }}
2,接收端
package com.jackie.day11;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;/** * 要先运行接收包的程序 * * @author Administrator * */public class UDPReceiver { public static void main(String[] args) { DatagramSocket ds = null; byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); try { ds = new DatagramSocket(6666);// 收包时要指定端口号 ds.receive(packet);// 开始接收包,未接收到前,一直阻塞 String str = new String(buf, 0, packet.getLength()); System.out.println(str); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (ds != null) { ds.close(); } } }}
0 0
- Socket通信
- Socket通信
- socket通信
- Socket通信
- Socket通信
- socket通信
- socket通信
- socket通信
- socket 通信
- socket通信
- SOCKET通信
- Socket通信
- 通信 socket
- socket 通信
- socket通信
- socket通信
- socket通信
- socket通信
- JDK部分源码阅读与理解
- c语言堆排序解析
- 话说Spring Security权限管理(源码)
- Linux 工作队列和等待队列的区别
- 猜数字小游戏
- Socket通信
- A. Wasted Time
- Oracle多表关联更新
- fastdfs中tracker、storage、client的理解与学习
- IDA Pro 远程调试Android进程环境配置
- 指针与数组的区别和联系
- linux工作队列机制详解
- Java迭代器介绍
- 益智C语言编程