在Linux系统中,Socket编程是一种用于实现进程间通信(IPC)和网络通信的技术
Socket类型:
地址族:
创建套接字:
使用socket()
函数创建套接字。例如:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定套接字:
使用bind()
函数将套接字绑定到指定的地址和端口。例如:
server_address = ('localhost', 12345)
sock.bind(server_address)
监听连接:
对于流式套接字,需要使用listen()
函数开始监听连接。例如:
sock.listen(5)
接受连接:
使用accept()
函数接受客户端连接。例如:
client_sock, client_address = sock.accept()
发送和接收数据:
使用send()
和recv()
函数发送和接收数据。例如:
client_sock.sendall(b'Hello, world!')
data = client_sock.recv(1024)
关闭套接字:
使用close()
函数关闭套接字。例如:
client_sock.close()
sock.close()
以下是一个简单的TCP服务器和客户端示例:
服务器端代码:
import socket
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
sock.bind(server_address)
sock.listen(5)
while True:
print("Waiting for a connection...")
client_sock, client_address = sock.accept()
print("Connected to", client_address)
data = client_sock.recv(1024)
print("Received:", data)
client_sock.sendall(b'Hello, client!')
client_sock.close()
if __name__ == '__main__':
main()
客户端代码:
import socket
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
sock.connect(server_address)
sock.sendall(b'Hello, server!')
data = sock.recv(1024)
print("Received:", data)
sock.close()
if __name__ == '__main__':
main()
这只是一个简单的示例,实际应用中可能需要考虑更多的细节,如错误处理、多线程或多进程等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。