一个hello/hi的简单的网络聊天程序
Posted wudizs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个hello/hi的简单的网络聊天程序相关的知识,希望对你有一定的参考价值。
我选择使用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调用底层API接口的流程大致如上图所示。
而我们所使用的socket与linux中的socket其实略有不同,python中的socket相当于封装好的linux的socket,使用起来较为简便,只需要提供ip地址,协议,端口号,即可创建一个套接字,等待连接或者进行与服务器端的连接。我们若想熟练使用linux的socket,就更需要对网络连接的过程进行深入的理解,每一步调用对应的API来实现所需的功能。
以上是关于一个hello/hi的简单的网络聊天程序的主要内容,如果未能解决你的问题,请参考以下文章