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 ...
随机推荐
- bzoj3624(Apio2008):免费道路
题目↓ Sample Input 5 7 2 1 3 0 4 5 1 3 2 0 5 3 1 4 3 0 1 2 1 4 2 1 Sample Output 3 2 0 4 3 0 5 3 1 1 2 ...
- Ext 默认时间
Ext js 设置默认时间 实例效果: 实现代码:
- Windows 10系统快捷键
虚拟桌面 创建新的虚拟桌面:Win + Ctrl + D 关闭当前虚拟桌面:Win + Ctrl + F4 切换虚拟桌面:Win + Ctrl +左/右 任务视图:Win + Tab Win10常用W ...
- [翻译向] 当flush privileges生效时
#前言: 最近频繁在mysql权限控制这里栽跟斗,在翻阅了一些资料之后,简单地翻译一下官网关于flush privileges的描述,抛砖引玉. #翻译正文: If the mysqld serv ...
- IdentityServer4 学习一
网上找的关于IdentityServer4的百度脑图 http://naotu.baidu.com/file/75b251257ce27cfa62e0ad7f47b75576?token=e2db61 ...
- java日志框架系列(6):logback框架encoder详解
1.Encoder 1.encoder功能 Encoder 负责两件事,一是把事件转换为字节数组,二是把字节数组写入输出流. 注意:在logback 0.9.19 版之前没有 encoder. 在之前 ...
- PAT甲级 堆 相关题_C++题解
堆 目录 <算法笔记>重点摘要 1147 Heaps (30) 1155 Heap Paths (30) <算法笔记> 9.7 堆 重点摘要 1. 定义 堆是完全二叉树,树中每 ...
- PHP之即点即改
html: <td data-hide="1200" class="px12" id ="<?php echo $v['g_id'];?& ...
- golang中switch用法细节
1. switch穿透-fallthrough, 如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透,默认只穿透一层 2. Type Switch: s ...
- zabbix硬件监控以及服务
大家好今天给大家带来zabbix3.4.8监控主机,那么最近由于我个人的关系.没有及时的更新文章所以,很抱歉那么今天我分享的内容是zabbix3.4.8监控服务器.本章的具体监控服务器如下: 服务器的 ...