Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python编写简单聊天程序

python编写简单聊天程序

作者头像
渔父歌
发布于 2018-10-15 04:53:32
发布于 2018-10-15 04:53:32
1.2K00
代码可运行
举报
文章被收录于专栏:数据结构笔记数据结构笔记
运行总次数:0
代码可运行

socket模块相关的方法和类

  • socket.socket():返回一个 socket对象。
  • socket.create_connection(address):创建一个连接到给定地址的 socket对象(注意:此处的 address是一个二元元组(host, port)。
  • 注意:上面两点中的 socket指 socket模块,以下的 socket均指 socket对象。
  • socket.bind(address):将 socket对象绑定到给定的地址上。
  • socket.listen():监听 socket绑定的地址,在调用该方法后如果有连接请求,就可以调用 socket.accept()接受连接。
  • socket.accept():在调用 socket.listen()方法后,调用该方法来接受连接请求。
  • socket.connect(address):连接到给定地址。
  • socket.send(bytes):发送二进制数据。
  • socket.recv(bufsize):接受一段 bufsize大小的数据,通常 bufsize是 2的 n次方,如 1024,40258等。

简单的 socket服务器端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import socket


HOST = '127.0.0.1'
PORT = 8888

server = socket.socket()
server.bind((HOST, PORT))
server.listen(1)


print(f'the server is listening at {HOST}:{PORT}')
print('waiting for conntection...')
conn, addr = server.accept()

print(f'connect success addr={addr}')
print('waiting for message')
while True:
    msg = conn.recv(1024)
    print('the clint send:', msg.decode())
    response = input('enter your response: ')
    conn.send(response.encode())
    print('waiting for answer')

简单的 socket客户端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import socket
import sys


try:
    host, port = input('please enter host address like host:port: ').split(':')
except ValueError:
    print('the address is wrong')
    sys.exit(-1)

if len(host) == 0 or len(port) == 0:
    print('the address is wrong')
    sys.exit(-1)
else:
    client = socket.create_connection((host, int(port)))
    
    print('connect successfully. waiting for response...')
    
    client.send(b'hello server.')
    while True:
        response = client.recv(1024)
        print('the response is:', response.decode())
        msg = input('please enter a answer: ')
        client.send(msg.encode())
        print('waiting for response...')

运行截图:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.10.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》
在现实生产环境中,一个服务端不可能只就服务于一个客户端;通常一个服务端是要能服务多个客户端,以下是多任务的实现思路:
苏州程序大白
2021/10/25
1K0
☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》
python简单socket
clinet端 #! /usr/bin/env python # -*-coding: utf-8-*- #这段代码是clinet端 import socket   #for sockets import sys  #for exit try:     #create an AF_INET, STREAM socket (TCP)     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error, msg:
py3study
2020/01/13
3400
python_socket
http://blog.csdn.net/rebelqsp/article/details/22109925
py3study
2020/01/10
3840
点对点通信实验
s.bind(address)将套接字绑定到地址。address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。
全栈程序员站长
2022/09/16
6950
点对点通信实验
python soscket监控系统
自己写的监控服务,想监控windows ,所以用python写了一个服务,用于执行系统命令
py3study
2020/01/06
5490
python简单的多人聊天室
运行时先启动服务端。进入聊天室先起一个昵称。服务端会向客户端发送当前聊天室内聊天人的列表。一个客户端发出的消息会通过服务端发给其他客户端。
py3study
2020/01/09
1.4K0
网络编程socket
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
Wyc
2018/09/11
9840
网络编程socket
Python黑帽编程2.8 套接字编程
套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此。官方关于socket编程的文档地址为https://docs.python.org/2/library/socket.html,我承认我看起来都很费劲。 套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套
用户1631416
2018/04/12
1.2K0
Python黑帽编程2.8 套接字编程
python network programming tutorial
该文章讲述了如何使用Python实现一个简单的TCP聊天服务器。
s1mba
2017/12/28
8290
python network programming tutorial
python socket编程(传输字符
socket官方文档:https://docs.python.org/2/library/socket.html
py3study
2020/01/06
8860
python socket编程(传输字符
Python基础21-网络编程
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
6130
Python基础21-网络编程
python实现单工、半双工、全双工聊天室
半双工实现是连接建立以后,服务器等待客户端发送消息,客户端发送消息后等待接收服务器,这样一来一回循环往复下去。直到出现quit,关闭连接。
Ewdager
2020/07/14
1.8K0
Python 一个简单的python socket编程
http://blog.csdn.net/winnie8829/article/details/37874355
bear_fish
2018/09/20
6530
网络编程
阅读目录 一.楔子 二.客户端/服务端架构 三.网络基础 四.套接字(socket)初使用 五.黏包 六.验证客户端链接的合法性 七.socketserver 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了。
人生不如戏
2018/04/12
1.5K0
网络编程
python网络编程
在学习 TCP/IP 协议之前,一直对网络编程很陌生,懂得原理之后再看网络编程的代码就觉得十分熟悉,借这个机会来总结记录一下,socket 编程的一般流程如下图,我们应该要将这些流程都记熟,用的时候按照顺序写代码就行了。很多语言都提供了 socket 的库可以直接调用,这次就用 python 来写写吧。
棒棒鸡不棒
2022/09/02
6310
python网络编程
10.socket网络编程
套接字工作流程 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Sock
zhang_derek
2018/04/11
9420
10.socket网络编程
sock基础编程介绍
一、套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。 套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套接字的支持。 三种最流行的套接字类型是:stream,datagram和raw。stream和datagram套接字可以直接与TCP协议进行接口,而raw套接字则接口到IP协议。但套接字并不限于TCP/IP。 二、套接字模块 套接字模块是一个非常简单的基于对象的接口,它提供对低层BSD套接字样式网络的访问。使用该模块可以实现客户机和服务器套接字。要在python 中建立具有TCP和流套接字的简单服务器,需要使用socket模块。利用该模块包含的函数和类定义,可生成通过网络通信的程序。一般来说,建立服务器连接需要六个步骤。 第1步是创建socket对象。调用socket构造函数。 socket=socket.socket(familly,type) family的值可以是AF_UNIX(Unix域,用于同一台机器上的进程间通讯),也可以是AF_INET(对于IPV4协议的TCP和 UDP),至于type参数,SOCK_STREAM(流套接字)或者 SOCK_DGRAM(数据报文套接字),SOCK_RAW(raw套接字)。 第2步则是将socket绑定(指派)到指定地址上,socket.bind(address) address必须是一个双元素元组,((host,port)),主机名或者ip地址+端口号。如果端口号正在被使用或者保留,或者主机名或ip地址错误,则引发socke.error异常。 第3步,绑定后,必须准备好套接字,以便接受连接请求。 socket.listen(backlog) backlog指定了最多连接数,至少为1,接到连接请求后,这些请求必须排队,如果队列已满,则拒绝请求。 第4步,服务器套接字通过socket的accept方法等待客户请求一个连接: connection,address=socket.accept() 调用accept方法时,socket会进入'waiting'(或阻塞)状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含有俩个元素的元组,形如(connection,address)。第一个元素(connection)是新的socket对象,服务器通过它与客户通信;第二个元素(address)是客户的internet地址。 第5步是处理阶段,服务器和客户通过send和recv方法通信(传输数据)。服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。服务器使用recv方法从客户接受信息。调用recv时,必须指定一个整数来控制本次调用所接受的最大数据量。recv方法在接受数据时会进入'blocket'状态,最后返回一个字符串,用它来表示收到的数据。如果发送的量超过recv所允许,数据会被截断。多余的数据将缓冲于接受端。以后调用recv时,多余的数据会从缓冲区删除。 第6步,传输结束,服务器调用socket的close方法以关闭连接。 建立一个简单客户连接则需要4个步骤。 第1步,创建一个socket以连接服务器 socket=socket.socket(family,type) 第2步,使用socket的connect方法连接服务器 socket.connect((host,port)) 第3步,客户和服务器通过send和recv方法通信。 第4步,结束后,客户通过调用socket的close方法来关闭连接。
超蛋lhy
2018/08/31
1.3K0
python socket编程
一.socket定义 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),基本上Socket 是任何一种计算机网络通讯中最基础的内容。例如当你在浏览器地址栏中输入 http://www.cnblogs.com/ 时,你会打开一个套接字,然后连接到 http://www.cnblogs.com/ 并读取响
用户1679793
2018/04/28
1.3K0
python socket编程
python-socket的一些用法
监听端执行命令后直接输入准备执行的命令 客户端执行命令连接监听端之后监听端就会执行命令(也可以使用nc 127.0.0.1 5555直接连接)
h0cksr
2023/05/16
2500
Python Socket套接字编程
网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息,资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等.
王 瑞
2022/12/28
1.5K0
相关推荐
☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验