基于TCP协议的套接字编程(简单)

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5) conn, addr = server.accept()
print(addr) data = conn.recv(1024).decode('utf-8')
print(data) conn.send('来自服务端消息:我不好'.encode('utf-8'))
conn.close() server.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 9999)
) client.send('来自客户端消息:你好'.encode('utf-8')) data = client.recv(1024).decode('utf-8')
print(data) client.close()

基于TCP协议的套接字编程(复杂)

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5) conn, addr = server.accept()
print(addr) while True:
# 接收客户端发送来的消息
data = conn.recv(1024).decode('utf-8')
print(data)
if data == 'q':
break
send_msg = input('server--->client: ').encode('utf-8')
conn.send(send_msg) conn.close()
server.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 9999)
) while True:
send_msg = input('client---> server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break # 服务端返回的数据
data = client.recv(1024).decode('utf-8')
print(data) client.close()

服务端服务多个客户

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 8888)
)
server.listen(5) # 半连接数,等待的用户 while True:
conn, addr = server.accept()
print(addr) while True:
try:
data = conn.recv(1024).decode('utf-8')
print(data) # mac\linux的bug:b''
if len(data) == 0:
continue if data == 'q':
break
send_msg = input('server--->client:').encode('utf-8')
conn.send(send_msg)
except Exception as e:
print(e)
break conn.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 8888)
) while True:
send_msg = input('client--->server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break data = client.recv(1024).decode('utf-8')
print(data) client.close()

基于TCP连接的socket套接字编程的更多相关文章

  1. 基于TCP协议的socket套接字编程

    目录 一.什么是Scoket 二.套接字发展史及分类 2.1 基于文件类型的套接字家族 2.2 基于网络类型的套接字家族 三.套接字工作流程 3.1 服务端套接字函数 3.2 客户端套接字函数 3.3 ...

  2. 基于UDP协议的socket套接字编程

    目录 一.UDP套接字简单示例 1.1 服务端 二.客户端 三.UPD套接字无粘包问题 3.1 服务端 3.2 客户端 四.qq聊天 4.1 服务端 4.2 客户端1 4.3 客户端2 4.4 运行结 ...

  3. Linux之socket套接字编程20160704

    介绍套接字之前,我们先看一下传输层的协议TCP与UDP: TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UD ...

  4. linux网络环境下socket套接字编程(UDP文件传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  5. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  6. socket套接字编程 HTTP协议

    socket套接字编程  套接字介绍  1. 套接字 : 实现网络编程进行数据传输的一种技术手段  2. Python实现套接字编程:import  socket  3. 套接字分类 >流式套接 ...

  7. socket 套接字编程

    今日内容 socket 套接字编程 简易服务端与客户端代码实现 通信循环 黏包现象(TCP协议) 报头制作.struct 模块.封装形式 内容详细 一.socket 套接字编程 实现一款能够进行数据交 ...

  8. Learning-Python【28】:基于TCP协议通信的套接字

    什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...

  9. Python 31 TCP协议 、socket套接字

    1.TCP协议 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割. (1)三次握手建链接( ...

随机推荐

  1. 对vue-cli各个目录的理解 和 在 vue 中使用json-server

    看了几章书,看到了vue模板,看不下去哦,就找了一个B站的vue视频来看,下面进行总结. 学习一个语言,框架,CRUD..先学会. 重点就是最为常用的几个语句.学得不多,感慨挺多.. 前提:下载好vu ...

  2. This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value

    iOS10 11之后遇到这种报错的小伙伴们请注意啦: 你会发现网上一大堆博客和论坛都是让你在  Info.plist 里面要涉及隐私数据时要添加一句“提示语”.于是打开 Info.plist,点击 + ...

  3. PHP生成唯一ID

    前言 PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据.即使使用了第二个参数,也会重复,最好的方 ...

  4. Linux 内核虚拟地址到物理地址转换讨论【转】

    转自:https://blog.csdn.net/sunlei0625/article/details/59476987 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请 ...

  5. git解决"failed to push some refs to"问题

    当我们正常的使用git发布文件更新Github仓库时, 比如我想传一张照片上去,首先把照片"2.png"复制到了".git"文件夹追踪的本地仓库中: 在Git ...

  6. C语言中,嵌套的if语句的一些经验...

    double f(double x){double result;if(x<0)result=-x+sin(x);else if(x==0)result=0;     else if(10> ...

  7. ASP.NET CORE HOW TO ADD "ACCESS-CONTROL-EXPOSE-HEADERS" HEADERS?

    services.AddCors(options =>       {                    options.AddPolicy("AnotherPolicy" ...

  8. 微信公众号开发 ,redirect_uri域名还是与后台配置不一致

    测试账号地址: https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index https ...

  9. C语言程序设计100例之(2):一元二次方程

    例2   一元二次方程 [题目描述] 输入系数a.b和c,求方程ax2+bx+c=0的根. [输入格式] 输入数据有多组.每组数据包括三个系数a,b,c.当a=0时,输入数据结束. [输出格式] 输出 ...

  10. 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开

    目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...