在代码中使用套接字连接到远程机器或环回地址 (127.0.01) 是网络编程。
import socket
import sys
HOST = 'localhost'
PORT = 8888 #any port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
#putting s.bind() in try because in case if the port is already being used it will through an exception
try:
s.bind((HOST, PORT))
except socket.error as msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
print 'Socket bind complete'
#Start listening on socket
s.listen(10)
print 'Socket now listening
while 1:
#wait to accept a connection - blocking call
conn, addr = s.accept()
print 'Connected with ' + addr[0] + ':' + str(addr[1])
s.close()
在上面的代码中,socket.socket(socket.AF_INET, socket.SOCK_STREAM) 语句创建了一个套接字,socket.AF_INET agrument 指定套接字将使用 Internet 协议 4 的 version4,通常称为 IPV4,socket.SOCK_STREAM 用于 TCP。
下一步是将套接字绑定到客户端可以连接数据的端口号,s.bind((HOST, PORT)) 语句将套接字绑定到端口 8888 和主机 localhost 它可能会失败并出现异常,如果端口是已经绑定到某个其他进程,或者您没有足够的权限打开一个端口。
s.listen(10) 用于监听 8888 端口,这里连接队列为 10,一次只能有 10 个连接可以排队。
conn, addr = s.accept() 用于接受来自客户端的连接,它返回一个元组,该元组具有连接对象和一个地址,从该地址向服务器发起连接,使用连接对象可以发送或接收简单的 read() 和写入数据函数可以与连接类一起使用。
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)clientsocket.connect(('localhost', 8888))
以上是众所周知的客户端代码
socket.socket(socket.AF_INET, socket.SOCK_STREAM) 语句创建一个套接字,clientsocket.connect(('localhost', 8888)) 语句将它连接到端口 8888 上的 'localhost'。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.