Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)这两个数据传输协议的支持.本文开始探讨 TCP. TCP 基础知识 在“服务器-客户端”这种架构中,服务器和客户端各自维护一个端点,两个端点需要通过网络进行数据交换.TCP 为这种需求提供了一种可靠的流式连接,流式的意思是传出和收到的数据都是连续的字节,没有对数据量进行大小限制.…
参考资料:java核心技术 卷II 为中断套接字操作,可使用java.nio包提供的SocketChannel类.可以使用如下方式打开SocketChannel: SocketChannel channel = SocketChannel.open(new InetSocketAddress(host, port)); java实现如下: public class InterruptibleSocketTest { public static void main(String[] args) {…
UDP 基本流程: UDP发送端基本流程: 1.使用DatagramSocket 指定端口 创建发送端 2.准备数据 一定转成字节数组 3. 封装成DatagramPacket 包裹,需要指定目的地 4.发送包裹send​(DatagramPacket p) * 5.释放资源 UDP接收端基本流程: 1.使用DatagramSocket 指定端口 创建接收端 2.准备容器 封装成DatagramPacket 包裹 3.阻塞式接收包裹receive​(DatagramPacket p) 4.分析数…
Java TCP的基本操作参考前一篇:Java 网络编程 – 基于TCP实现文件上传 实现多用户操作之前先实现以下单用户操作,假设目前有一个用户: 账号:zs 密码:123 服务端: public class LoginServer { public static void main(String[] args) throws IOException { System.out.println("=========server========"); // 1.使用serverSocket…
java网络编程--4 UDP 1.7.UDP 发短信:不用连接,但是需要知道对方的地址 主要包含两个类:DatagramPacket 和 DatagramSocket 发送消息 发送端: package com.ssl.lesson03; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; //不需要连接服务器 public class UdpClientDem…
UDP协议没有粘包问题,但是缓冲区大小要足够装数据包大小,建议不要超过 512 服务端: # 服务端 import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议->udp server.bind(('127.0.0.1', 8080)) # OSError: 一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小. data, client_a…
IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_port;(2个字节) struct in_addr sin_addr;(4个字节) ]; }; sin_len:整个sockaddr_in结构体的长度,部分Linux内核版本没有该成员 sin_family:指定该地址家族,一般设置为AF_INET(使用TCP,UDP协议) sin_port:端口…
UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPacket) 下面是一个基于UDP协议的通信的例子, 服务器端, package udp; import java.io.IOException; import java.net.DatagramPac…
什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了DatagramSocket对象作为基于UDP协议的Socket.使用DatagramPacket代表 DatagramSocket发送.接收的数据包.   UDP协议从问世至今已经被使用了很多年,虽然UDP协议目前应用不如TCP协议广泛,但 UDP协议依然是一个非常实用和可行的网络传输层协议.尤其…
package com.wzy.UDPTest; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * * @author wzy * 服务器端,实现基于UDP的用户登陆 */ public class UDPserver { public static void main(String[] args) { try{ //1.创建服务器端Datagram…