python_网络编程socket(TCP)
服务端:
import socket
sk = socket.socket() #创建对象
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免服务器重启时报address already in use错误
sk.bind(('127.0.0.1',8877)) #把地址绑定到套接字(ip地址,端口号)
sk.listen() #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024) #接受客服端信息(数据长度)
print(ret) #打印客户端信息
conn.send(b'hi') #向客户端发送星系(必须是bytes类型)
conn.close() #关闭客户端连接
sk.close() #关闭服务器套接字
客户端:
import socket
sk = socket.socket() #创建对象
sk.connect(('127.0.0.1',8877)) #连接服务器(ip地址,端口号)
sk.send(b'hello') #向服务器发送信息(必须是bytes类型) ret = sk.recv(1024) #接收信息(数据大小)
print(ret) #打印信息
sk.close() #关闭对象
有收必有发,收发必相等,send和rexv必须是对应的
send ----- recv
send ----- recv
recv ----- send
传递中文:
# 服务端
# 接收中文
ret = conn.recv(1024).encode('utf-8')
print(ret) #打印
# 发送中文
conn.send(bytes('七点半',encoding='utf-8')) # 客户端
# 发送中文
sk.send(bytes('几点了'.encode('utf-8')))
# 接收中文
ret = sk.recv(1024).encode('utf-8')
print(ret) #打印
实例:聊天
服务端:
import socket
sk = socket.socket() #创建对象
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免服务器重启时报address already in use错误
sk.bind(('127.0.0.1',8877)) #把地址绑定到套接字(ip地址,端口号)
sk.listen() #监听链接
conn,addr = sk.accept() #接受客户端链接 while True:
ret = conn.recv(1024).decode('utf-8')
print(ret)
if ret == 'bye':
conn.send(b'bye')
break
info = input('>>>')
conn.send(bytes(info,encoding='utf-8')) conn.close() #关闭客户端连接
sk.close() #关闭服务器套接字
客户端:
import socket
sk = socket.socket() #创建对象
sk.connect(('127.0.0.1',8877)) #连接服务器(ip地址,端口号) while True:
info = input('>>>')
sk.send(bytes(info,encoding='utf-8'))
ret = sk.recv(1024).decode('utf-8')
print(ret)
if ret == 'bye':
sk.send(b'bye')
break sk.close() #关闭对象
python_网络编程socket(TCP)的更多相关文章
- android 网络编程--socket tcp/ip udp http之间的关系
网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象. 下面是应用层.运输层,网络 ...
- UNIX网络编程——Socket/TCP粘包、多包和少包, 断包
为什么TCP 会粘包 前几天,调试mina的TCP通信, 第一个协议包解析正常,第二个数据包不完整.为什么会这样吗,我们用mina这样通信框架,还会出现这种问题? TCP(transport cont ...
- python_网络编程socket(UDP)
服务端: import socket sk = socket.socket(type=socket.SOCK_DGRAM) #创建基于UDP协议的socket对象 sk.bind(('127.0.0. ...
- 网络编程Socket之TCP之close/shutdown具体解释(续)
接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- Python_网络编程_socket()
什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 详细资 ...
- 网络编程socket基本API详解(转)
网络编程socket基本API详解 socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
[Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...
随机推荐
- Flink SQL项目实录
一.Flink SQL层级 为Flink最高层的API,易于使用,所以应用更加广泛,eg. ETL.统计分析.实时报表.实时风控等. Flink SQL所处的层级: 二.Flink聚合: 1.Wind ...
- c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status
2018-12-27 08:39:49.808 [destination = example , address = /127.0.0.1:3308 , EventParser] WARN c.a.o ...
- 1、4 前后端分离,写静态HTML文件,通过ajax 返回数据
1.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- Linux系统目录的学习
1.在公司中linux 都是没有界面 2.系统路径 2.1 /表示根目录 2.2 ~表示/root 2.3etc:存放系统配置文件 2.4 home 除了root 以外所有用 ...
- 基于.Net Standard开发的微信服务端开源库
一直想做一个开源库, 为社区贡献一份力量, 同时提高一下自己 一年来在给公司做一款微信小程序, 于是突发奇想用.Net Standard做一整套微信开发服务端类库 地址: https://gitee. ...
- [转帖]详解oracle数据库唯一主键SYS_GUID()
详解oracle数据库唯一主键SYS_GUID() https://www.toutiao.com/i6728736163407856139/ 其实 需要注意 这里满不能截取 因为截取了 就不一定唯一 ...
- 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化
一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...
- 利用Python进行数据分析_Numpy_基础_2
Numpy数据类型包括: int8.uint8.int16.uint16.int32.uint32.int64.uint64.float16.float32.float64.float128.co ...
- python 正则 re模块(详细版)
正则表达式 什么是正则表达式? 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合 ...
- golang之面向对象编程
1.Golang语言面向对象编程说明 1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.所以我们说Golang支持面向对象编程特性是比较准确的. ...