博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python网络编程:socket套接字
阅读量:4646 次
发布时间:2019-06-09

本文共 2632 字,大约阅读时间需要 8 分钟。

一、socket

二、TCP服务器

三、TCP客户端

四、UDP服务器

五、UDP客户端

六、聊天的客户端

七、聊天的服务器

 

一、socket

"""    学习网络编程 其实就是在学socket    socket是什么?        翻译过来称为套接字        是对底层的 TCP IP UDP 等网络协议进行封装        使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议    在程序员的言论,他就是一个封装好的模块!    要完成网络通讯,只需要使用系统提供的socket模块就行    TCP和UDP是传输层最常见的协议    主要控制传输数据的方式    TCP的传输方式        优点:通过三次握手来与服务器建立连接             可以保证数据的完整性                a机器给b机器发送数据包  要求b机器必须立即返回一个确认包                a机器会等待一段时间,如果超时还没有收到确认,则重发数据        缺点:传输效率低        使用场景: 文字聊天,支付宝转账等,    UDP        传输方式:不需要建立连接,直接发送        缺点: 不能保证数据的完整性        优点:传输效率比TCP高        使用场景:视频通话,语音通话,UDP    python中的socket    在使用socket的时候用户需要关心的是 ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data    在写网络编程的时候,必然是有两台代码,对应着客户端和服务器    使用socket来完成TCP通讯        应该先完成服务器的代码编写"""

二、TCP服务器

import socket# 1.创建一个代表服务器的socket对象s = socket.socket()# 2.绑定端口号和IP地址# 127.0.0.1 表示当前这个电脑的ipaddress = ("127.0.0.1",8080)s.bind(address)print("服务器已启动!")# 3.开始监听这个端口# 5表示 可以有5个处于半连接状态的连接   指的不是最大连接数s.listen(5)print("test")# 4.接受连接请求# 该函数是阻塞的 会卡主程序的执行,必须等到有一个客户端进来才会继续执行# 返回元组  第一个是代表客户端的socket对象 第二客户端的地址信息client,c_address = s.accept()print("有一个连接已建立!")print(c_address)# 给客户端发送数据# 5.读写数据 # 接受数据res = client.recv(1024)print(res)# 6.关闭连接# s.close()

 

三、TCP客户端

import socket# 1.创建客户端的socket对象c = socket.socket()# 2.指定服务器的ip和portserver_address = ("127.0.0.1",8080)# 3.建立连接c.connect(server_address)# 4.读写数据# 发送数据到服务器c.send("hello 我是客户端!".encode("utf-8"))# 5.关闭连接c.close()

四、UDP服务器

import socket# 1.创建socket对象s = socket.socket(type=socket.SOCK_DGRAM)# 2.绑定端口和ips.bind(("127.0.0.1",10000))while True:    # 3.接受数据    res = s.recv(1024)    print(res)while True:    msg = input(">>>:")    # 需要获取对方的ip和端口    #s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))# 关闭资源s.close()

五、UDP客户端

import socket# 1.创建socket对象s = socket.socket(type=socket.SOCK_DGRAM)# 2.绑定端口和ips.bind(("127.0.0.1",10000))while True:    # 3.接受数据    res = s.recv(1024)    print(res)while True:    msg = input(">>>:")    # 需要获取对方的ip和端口    #s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))# 关闭资源s.close()

六、聊天服务器

import socket# 1.创建socket对象s = socket.socket(type=socket.SOCK_DGRAM)# 2.绑定端口和ips.bind(("127.0.0.1",10000))while True:    # 3.接受数据    res = s.recv(1024)    print(res)while True:    msg = input(">>>:")    # 需要获取对方的ip和端口    #s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))# 关闭资源s.close()

七、聊天客户端

import socketclient = socket.socket()client.connect(("127.0.0.1",65535))while True:    # 发送    client.send(input(">>>:").encode("utf-8"))    # 接收    data = client.recv(1024).decode("utf-8")    print(data)    if len(data) == 0:        client.close()        break

 

转载于:https://www.cnblogs.com/wuzhengzheng/p/10268518.html

你可能感兴趣的文章
jquery控制css的display(控制元素的显示与隐藏)
查看>>
关于python做人工智能的一个网页(很牛逼)
查看>>
判断控件的CGRect是否重合,获取控件的最大XY值
查看>>
POJ-1128 Frame Stacking
查看>>
浏览器调试淘宝首页看到有趣的招聘信息
查看>>
ASP.NET Identity “角色-权限”管理 4
查看>>
[转][译]ASP.NET MVC 4 移动特性
查看>>
SOC CPU
查看>>
get_result --perl
查看>>
163镜像地址
查看>>
ehcache memcache redis 三大缓存男高音
查看>>
eclipse 快捷键Open Implementation 直接退出
查看>>
minix中管道文件和设备文件的读写
查看>>
JAXB - Annotations, Annotations for Enums: XmlEnum, XmlEnumValue
查看>>
context 插图
查看>>
文件管理器中不支持的wma歌曲也显示可以播放的音乐图标
查看>>
Java基础学习-流程控制语句
查看>>
Shell中read的常用方式
查看>>
01javascript数据类型
查看>>
asp.net实现md5加密方法详解
查看>>