tcp服务器
#coding=utf-8 ''' 这里是tcp服务器端,要先启动 ''' import socket import threading bind_ip = "0.0.0.0" bind_port = 9999 ''' "0.0.0.0" 在服务器端它表示 本机上的所有IPV4地址,如果一个服务有多个IP地址(192.168.1.2和10.1.1.12),那么我们如果设置的监听地址是0.0.0.0那么我们无论是通过IP192.168.1.2还是10.1.1.12都是可以访问该服务的。 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。 ''' # 创建服务器端的套接字 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((bind_ip,bind_port)) server.listen(5) print "[*] Listening on %s:%d" % (bind_ip,bind_port) # 用来跟客户端通信的 def handle_client(client_socket): # 接受客户端的信息 request = client_socket.recv(1024) print "[*] Received: %s" % request # 向客户端发送信息 client_socket.send("这里是服务器端!") ''' getpeername()用于得到与某个套接字关联的外地协议地址,说白了就是得到客户端 ''' print client_socket.getpeername() client_socket.close() while True: client,addr = server.accept() print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1]) # 用多线程 client_handler = threading.Thread(target=handle_client,args=(client,)) client_handler.start()
tcp客户端:
#coding=utf-8 ''' 这里是tcpd的客户端 需要服务器端先打开端口 ''' import socket # 创建套接字对象 确定要连接的服务器 # target_host=input("请输入目标ip:") # # print target_host # target_port=input("请输入目标端口:") target_host="127.0.0.1" target_port=9999 clinet = socket.socket(socket.AF_INET,socket.SOCK_STREAM) clinet.connect((target_host,target_port)) clinet.send("这里是tcp客户端") response = clinet.recv(4096) print response
udp客户端:
#coding=utf-8 ''' 这里是udp的客户端 需要服务器端先打开端口 ''' import socket target_host="127.0.0.1" target_port=9999 clinet = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) clinet.sendto("这里是udp客户端",(target_host,target_port)) response,addr = clinet.recvfrom(4096) print "udp客户单开始执行" print response print addr
udp服务器:
# coding=utf-8 ''' import socket import threading from time import * bind_ip = "0.0.0.0" bind_port = 9999 # 创建服务器端的套接字 server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind((bind_ip, bind_port)) print "[*] Listening on %s:%d" % (bind_ip, bind_port) while True: data,addr=server.recvfrom(1024) server.sendto("这里是udp客户端") print "接收:",data server.close()