TCP编程的迷惑
2017-11-23 00:07
134 查看
server : ip -- 192.168.96.132
client: ip--192.168.96.131
在服务端,accept函数的其中一个入参是listen-socket,会返回一个新的connection-socket。通过connection-socket,调用getpeername,可以得到客户端的IP和端口。通过connection-socket,调用getsockname,可以得到本地的IP和端口。
按我直观的理解,这个端口应该是个随机的端口,因为connection-socket是新建的socket,是和listen-socket不同的socket。但事实令我不解,这个端口竟然和listen-socket绑定的端口是相同的。
Answer:原来我们看socket,不能光看到通过socke API或accept API创建的socket,心中要有图画,这个socket是和远方连接的。每个socket由四元组组成,本地IP,本地端口,远方IP,远方端口。虽然accept函数返回的connection-socket调用getsockname返回的IP和端口同listen-socket绑定的IP和端口是相同的,但因为他们的远方连接的不同,所以他们是不同的socket。不要迷惑。
client: ip--192.168.96.131
在服务端,accept函数的其中一个入参是listen-socket,会返回一个新的connection-socket。通过connection-socket,调用getpeername,可以得到客户端的IP和端口。通过connection-socket,调用getsockname,可以得到本地的IP和端口。
按我直观的理解,这个端口应该是个随机的端口,因为connection-socket是新建的socket,是和listen-socket不同的socket。但事实令我不解,这个端口竟然和listen-socket绑定的端口是相同的。
Answer:原来我们看socket,不能光看到通过socke API或accept API创建的socket,心中要有图画,这个socket是和远方连接的。每个socket由四元组组成,本地IP,本地端口,远方IP,远方端口。虽然accept函数返回的connection-socket调用getsockname返回的IP和端口同listen-socket绑定的IP和端口是相同的,但因为他们的远方连接的不同,所以他们是不同的socket。不要迷惑。
相关文章推荐
- 关于TCP编程,你是否为此迷惑过
- C# 网络编程(TCP、UDP)
- Linux网络编程--wireshark分析TCP包头的格式
- Linux下TCP Socket编程C语言小实例
- socket编程,先来个简单的TCP例子吧
- TCP/IP的Socket编程
- Linux系统开发12 Socket API编程3 TCP状态转换 多路IO高并发select poll epoll udp组播 线程池
- 网络编程释疑:TCP连接拔掉网线后会发生什么
- socket编程—TCP/IP 多客户端
- android 网络编程socket tcp/ip udp http之间的关系
- 网络编程之TCP,HTTP,Socket的理解
- 基本的TCP编程
- TCP编程--网络聊天工具
- 基于TCP/IP和UDP协议的socket编程结构解析
- 网络编程之TCP异步群聊:客户端代码
- java 实现 socket TCP 编程
- 网络编程TCP总结及实践-C语言
- TCP的三次握手和四次握手是在socket编程的什么阶段发生的
- 网络编程:Tcp和Udp
- TCP / UDP套接字编程