标签:socket host lease connect mes address lin lse pytho
我选择使用python来实现hello/hi的简单网络聊天程序,源代码包括两个部分,客户端代码和服务器端代码,源代码部分如下图所示:
1 import socket 2 3 HOST = ‘127.0.0.1‘ 4 PORT = 8888 5 6 server = socket.socket() 7 server.bind((HOST, PORT)) 8 server.listen(1) 9 10 print(f‘the server is listening at {HOST}:{PORT}‘) 11 print(‘waiting for conntection...‘) 12 conn, addr = server.accept() 13 14 print(f‘connect success addr={addr}‘) 15 print(‘waiting for message‘) 16 while True: 17 msg = conn.recv(1024) 18 print(‘the clint send:‘, msg.decode()) 19 response = input(‘enter your response: ‘) 20 conn.send(response.encode()) 21 print(‘waiting for answer‘)
1 import socket 2 import sys 3 4 try: 5 host, port = input(‘please enter host address like host:port: ‘).split(‘:‘) 6 except ValueError: 7 print(‘the address is wrong‘) 8 sys.exit(-1) 9 10 if len(host) == 0 or len(port) == 0: 11 print(‘the address is wrong‘) 12 sys.exit(-1) 13 else: 14 client = socket.create_connection((host, int(port))) 15 16 print(‘connect successfully. waiting for response...‘) 17 18 client.send(b‘hello server.‘) 19 while True: 20 response = client.recv(1024) 21 print(‘the response is:‘, response.decode()) 22 msg = input(‘please enter a answer: ‘) 23 client.send(msg.encode()) 24 print(‘waiting for response...‘)
对于源代码实现的效果如下图所示,第一张图为服务器端代码,首先应当启动服务器端,然后等待客户端进行连接,之后再启动客户端如第二张结果图所示,启动客户端需要与服务器端进行连接,由于我使用的是本地的两个端,因此IP地址为127.0.0.1,端口为8888,之后连接成功,自动向服务器端发送一条消息,hello server,而服务器端需要我们来控制内容进行回复,至此客户端与服务器端已经可以正常进行通信了。
socket调用底层API接口的流程大致如上图所示。
而我们所使用的socket与linux中的socket其实略有不同,python中的socket相当于封装好的linux的socket,使用起来较为简便,只需要提供ip地址,协议,端口号,即可创建一个套接字,等待连接或者进行与服务器端的连接。我们若想熟练使用linux的socket,就更需要对网络连接的过程进行深入的理解,每一步调用对应的API来实现所需的功能。
标签:socket host lease connect mes address lin lse pytho
原文地址:https://www.cnblogs.com/zhang512/p/12013769.html