JAVA SOCKET编程 TCP |UDP【学习】
来源:互联网 发布:传奇宝宝升级数据 编辑:程序博客网 时间:2024/06/14 06:07
一、概念
socket编程分为两种类型,其中一种为TCP,还有一种为UDP
UDP是无状态的,TCP是有状态的,这样UDP就无需进行阻塞,因此要设置响应时间,这样也会造成数据丢失,通常用于广播数据,无需知道数据是否已经被发送出去了
二、实例代码
- TCP服务端代码
public class SocketServer { private final static int PORT = 9080; public static void main(String[] args) throws Exception { System.out.println("服务端启动了"); ServerSocket serverSocket = new ServerSocket(PORT); Socket socket = serverSocket.accept(); InputStream inputStream= socket.getInputStream(); InputStreamReader inputStreamReader= new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); String receiveClientData = null; while((receiveClientData = bufferedReader.readLine())!=null){ System.out.println("服务端:接受到了客户端信息"); System.out.println("服务端:客户端IP为"+socket.getRemoteSocketAddress()); bufferedWriter.write(Calendar.getInstance().getTime()+"服务器接受到客户端信息==>>"+receiveClientData); bufferedWriter.flush(); } socket.shutdownInput(); socket.shutdownOutput(); socket.close(); }}
- TCP客户端
public class SocketClient { private static final String HOST_NAME = "127.0.0.1"; private static final int PORT = 9080; public static void main(String[] args) throws Exception { System.out.println("客户端启动了"); Socket socket = new Socket(HOST_NAME, PORT); OutputStream outputStream=socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); bufferedWriter.write("我是客户端,服务端您好啊"); bufferedWriter.flush(); socket.shutdownOutput(); InputStream inputStream = socket.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String serverData=null; while((serverData=bufferedReader.readLine())!=null){ System.out.println("客户端:服务端响应的消息为=》》"+serverData); } socket.shutdownInput(); socket.close(); }}
- UDP服务端
ublic class UdpSocketServer { private static final int ECHO_MAX = 255; public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(8080); DatagramPacket packet = new DatagramPacket(new byte[ECHO_MAX], ECHO_MAX); while (true) { socket.receive(packet); System.out.println("服务端:处理客户端地址为--》》"+packet.getAddress()); System.out.println("服务端:处理客户端数据为--》》"+new String(packet.getData())); socket.send(packet); packet.setLength(ECHO_MAX); } }}
- UDP客户端
public class UdpClientSocket { public static void main(String[] args) throws Exception { System.out.println("udp 客户端启动"); InetAddress inetAddress = InetAddress.getByName("127.0.0.1"); byte[] bytesToSend = "你好啊".getBytes(); DatagramSocket datagramSocket = new DatagramSocket(); datagramSocket.setSoTimeout(3000); DatagramPacket sendPacket = new DatagramPacket( bytesToSend, bytesToSend.length, inetAddress, 8080); DatagramPacket receivePacket = new DatagramPacket(new byte[bytesToSend.length], bytesToSend.length); int tries = 0; boolean receivedResponse = false; do { try { datagramSocket.send(sendPacket); datagramSocket.receive(receivePacket); if (!receivePacket.getAddress().equals(inetAddress)) { System.out.println("receive unknow host"); }else{ System.out.println("已经发送信息了!!"); } } catch (Exception e) { tries++; System.out.println("time out ,try again!!"); } receivedResponse = true; } while (!receivedResponse && tries < 5); if(receivedResponse){ System.out.println("receive"+new String(receivePacket.getData())); }else{ System.out.println("not receive data!!!"); } datagramSocket.close(); }}
0 0
- JAVA SOCKET编程 TCP |UDP【学习】
- TCP/UDP socket编程学习
- Java---Socket编程UDP/TCP
- Java---Socket编程UDP/TCP
- Java---Socket编程UDP/TCP
- Java---Socket编程UDP/TCP
- Java socket编程--TCP UDP
- Java---Socket编程UDP/TCP
- Java---Socket编程UDP/TCP
- Java Socket编程 Tcp/Udp
- Java Socket 编程学习(5) TCP UDP总结
- JAVA Socket编程学习4--TCP和UDP多线程通信
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- Java TCP/UDP socket 编程流程总结
- Android studio 2.3 打包版本,提示 Error: Expected resource of type styleable [ResourceType]
- HTTP接口测试工具-CDSpace
- 转//前端工程师进阶
- Layui弹层组件,日期控件,分页组件
- Retrofit使用详解(二)
- JAVA SOCKET编程 TCP |UDP【学习】
- MAVEN中央仓库搭建
- sql语句相关
- 如何使用SublimeText自带reindent功能格式化代码
- jquery操作select(取值,设置选中)
- h5 viewport
- [转]Eclipse 代码提示 Alt+/ 失效的解决方案
- java 单例模式详解
- 牛客网——回文序列 对比 平衡数