1、基于socket.sock_stream实现tcp连接
sock_stream 是有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料(如文件)传送。
SOCK_STREAM是基于TCP的,数据传输比较有保障。基于广播SOCK_STREAM 是数据流,一般是tcp/ip协议的编程,
tcp服务端
#!/usr/bin/env python
# -*- coding:utf8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import socket
class TcpServer(object):
def tcpServer(self):
#socket.SOCK_STREAM表示启动tcp协议的socket传输
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定同一个域名下的所有机器
sock.bind(('', 10086))
sock.listen(5)
while True:
clientSock, (remote_address, remote_port) = sock.accept()
# 接收客户端的ip, port
print("[%s:%s] connect" % (remote_address, remote_port))
recvData = clientSock.recv(1024)
sendDataLen = clientSock.send("this is response data from server")
print("recvData : %s" % (recvData))
print("sendDataLen: %d " % (sendDataLen))
clientSock.close()
if __name__ == "__main__":
tcpServer = TcpServer()
tcpServer.tcpServer()
tcp客户端
#!/usr/bin/env python
# -*- coding:utf8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import socket
class TcpClient(object):
def tcpclient(self):
clientSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSock.connect(('127.0.0.1', 9527))
sendDataLen = clientSock.send("this is send data from client")
recvData = clientSock.recv(1024)
print("recvData : %s" % (recvData))
print("sendDataLen: %d " % (sendDataLen))
clientSock.close()
if __name__ == "__main__":
tcpClient = TcpClient()
tcpClient .tcpclient()
2、基于socket.sock_dgram实现udp连接
sock_dgram 是无保障的面向消息的socket , 主要用于在网络上发广播信息。
SOCK_DGRAM是基于UDP的,专门用于局域网,SOCK_DGRAM分是数据抱,是udp协议网络编程
udp服务端
#!/usr/bin/env python
# -*- coding:utf8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import socket
class UdpServer(object):
def udpServer(self):
#socket.SOCK_DGRAM表示启动udp协议的socket传输
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定同一个域名下的所有机器
sock.bind(('', 10086))
while True:
recvData, (remote_address, remote_port) = sock.recvfrom(1024)
# 接收客户端的ip, port
print("[%s:%s] connect" % (remote_address, remote_port))
sendDataLen = sock.sendto("this is send data from server", (remote_address, remote_port))
print("recvData : %s" % (recvData))
print("sendDataLen: %d " % (sendDataLen))
sock.close()
if __name__ == "__main__":
udpServer = UdpServer()
udpServer.udpServer()
udp客户端
#!/usr/bin/env python
# -*- coding:utf8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import socket
class UdpClient(object):
def udpclient(self):
clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sendDataLen = clientSock.sendto("this is send data from client", ('localhost', 10086))
recvData = clientSock.recvfrom(1024)
print("recvData : %s" % (recvData))
print("sendDataLen: %d " % (sendDataLen))
clientSock.close()
if __name__ == "__main__":
udpClient = UdpClient()
udpClient.udpclient()