基于Python完成一个hello/hi的简单的网络聊天程序

Posted 知其不二

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Python完成一个hello/hi的简单的网络聊天程序相关的知识,希望对你有一定的参考价值。

一、Socket 套接字简介

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。根据RFC793的定义:端口号拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)。

二、基于Python实现一个简单的网络聊天程序

此例中使用了Python中的Socket API接口,程序的功能就是:客户端向服务器发送一条消息,服务器端返回一条消息给客户端,以实现简单的网络聊天。

server.py

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((127.0.0.1,9999))  #监听端口
s.listen(1)  #调用listen()方法开始监听端口,传入的参数指定等待连接的最大数量
sock,addr = s.accept()
buf = sock.recv(1024).decode()

while True:
    if  buf!=exit:
        print(客户端:’+buf)
        data = input(服务端:)
        sock.send(data.encode())
        if  data==exit:
        break

     buf =sock.recv(1024).decode()

 client.py

import socket
import sys
#创建一个socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#建立连接
s.connect((127.0.0.1, 9999))
while True:
    # 发送数据:
    try:
        data = input("客户端说:")
        s.send(data.encode())
        buf = s.recv(1024).decode()
        if buf!=exit:
            print("服务端说: " + buf)
    except:
        print("Dialogue Over")
        s.close()
        sys.exit(0)

 

 

 

哈哈哈

 

以上是关于基于Python完成一个hello/hi的简单的网络聊天程序的主要内容,如果未能解决你的问题,请参考以下文章

以您熟悉的编程语言为例完成一个hello/hi的简单的网络聊天程序

基于Java实现hello/hi简单网络聊天程序

用c++完成一个hello/hi的简单的网络聊天程序

使用python实现一个hello/hi的简单的网络聊天程序

一个hello/hi的简单的网络聊天程序

一个hello/hi的简单的网络聊天程序和python Socket API与Linux Socket API之间的关系