socket.SOCK_STREAM socket.SOCK_DGRAM socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。 还有两种就是 socket.SOCK_RDM 与 socket.SOCK_SEQPACKET,基本没见过用 ...
socket.SOCK_RAW #原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。 socket.SOCK_RDM #是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问...
def receive_socket_info(handle, expected_msg, side='server', do_decode=True, do_print_info=True): """ 循环接收socket info,判断其返回值,直到指定的值出现为止,防止socket信息粘连,并根据side打印不同的前缀信息 :param handle: socket句柄 :param expected_msg: 期待接受的内容,如果接受内容不在返回结果...
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) exceptsocket.error, msg: print'Socket create error: ',str(msg[0]),'message: ',msg[1] sys.exit() # 设置手工提供IP头部 s.setsockopt(socket.IPPROTO_TCP, socket.IP_HDRINCL,1) returns # 创建IP头部 defCreateIpHeader(...
# type=SOCK_DGRAM - UDP套接字 # type=SOCK_RAW - 原始套接字 server = socket(family=AF_INET, type=SOCK_STREAM) # 2.绑定IP地址和端口(端口用于区分不同的服务) # 同一时间在同一个端口上只能绑定一个服务否则报错 server.bind(('192.168.1.2', 6789)) ...
原始套接字(SOCK-RAW)。该套接字允许对较低层协议(如 IP 或ICMP)进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。 protocol 指明所要接收的协议类型,通常为 0 或者不填。 socket 相关的部分常用函数有:
type 的取值通常是SOCK_STREAM(用于定向的连接,可靠的TCP连接)或SOCK_DGRAM(用于UDP): >>> from socket import * >>> s=socket(AF_INET,SOCK_STREAM) family和type参数暗指了一个协议,但是你可以使用socket的第三个可选的参数(proto的取值如IPPROTO_TCP或IPPROTO_RAW)来指定所使用的协议。代替使用IPPROTO_XX...
1、socket介绍 import socket def handle_request(client): buf = client.recv(1024) client.sendall(bytes("HTTP/1.1 200 OK\r\n\r\n", encoding='utf-8')) client.sendall(bytes("Hello, World", encoding='utf-8')) def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ...
其中,第一个参数是代表套接字家族,一般有socket.AF_UNIX、socket.AF_INET、socket.AF_INET6可以选择。AF_UNIX是本机的通信,AF_INET和AF_INET6分别是IPv4和IPv6。第二个参数是套接字类型,有socket.SOCK_STREAM、socket.SOCK_DGRAM、socket.SOCK_RAW,分别代表套接字的三种类型。
flush()else:raisesocket.errorexceptsocket.error:stdprint("Connection close by socket.\n")close_socket(conn,1)defmain(port):conn=socket.socket(socket.AF_INET,socket.SOCK_STREAM)conn.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)conn.bind(('0.0.0.0',port))conn.listen(1)try:talk,addr=...