首页 > 其他 > 详细

网络编程--socket

时间:2019-09-06 22:21:18      阅读:113      评论:0      收藏:0      [点我收藏+]

套接字编程Socket

什么是套接字Socket?

Socket是应用层与传输层,网络层之间的抽象层。它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

套接字可以根据IP进行ARP协议找到指定的电脑,在根据Port找到电脑中相应的程序。

半连接池

其实就是tcp三次握手中,客户端向服务器发送了连接请求,服务端响应了请求,等待最后服务器到客户端之间的传输通道的,客户端响应(简单来说就是三次握手的第三次

Socket实现流程

技术分享图片

AF_INET(又称 PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而 AF_UNIX 则是 Unix 系统本地通信。

选择 AF_INET 的目的就是使用 IPv4 进行通信。因为 IPv4 使用 32 位地址,相比 IPv6 的 128 位来说,计算更快,便于用于局域网通信。

而且 AF_INET 相比 AF_UNIX 更具通用性,因为 Windows 上有 AF_INET 而没有 AF_UNIX。
简单Socket实现

服务器端

import socket

#初始化套接字对象,指定套接字的为ipv4,和tcp协议
s_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#给套接字服务器对象绑定ip和端口号
s_socket.bind(('127.0.0.1',9000))

#给服务器设置半连接池,同时最多只有5个客户端可以等待连接完成,多余的客户端无法连接
s_socket.listen(5)

#堵塞等待客户端来连接,并获取数据传输通道和客户端ip和端口
con,addr=s_socket.accept()

print(addr)

#堵塞接收,从网卡中读取1024字节的数据
data=con.recv(1024)

#向客户端发送二进制的数据
con.send(data)

#关闭传输通道
con.close()

#关闭服务端
s_socket.close()

客户端

import socket

#创建客户端socket对象
soc=socket.socket()

#向指定的ip和端口发起连接请求
soc.connect(('127.0.0.1',9000))

soc.send(b'xxx')

data=soc.recv(1024)

print(data)

soc.close()

网络编程--socket

原文:https://www.cnblogs.com/zx125/p/11478246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!