TCP 编程

客户端代码

将键盘输入的字符发送到服务端,并将从服务端接收到的字符输出到终端

 1 #!/usr/python3
 2
 3 import socket
 4
 5 def socket_client():
 6     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 7
 8     #获取主机名
 9     host = socket.gethostname()
10     port = 9999
11
12     #建立连接
13     s.connect((host, port))
14
15     #接受欢迎消息
16     print(s.recv(1024).decode('utf-8'))
17     while True:
18         data = input()
19         #发送数据
20         s.send(data.encode('utf-8'))
21         print(s.recv(1024).decode('utf-8'))
22     s.send(b'exit')
23     s.close()
24
25 def main():
26     socket_client()
27
28 if __name__ == '__main__':
29     main()

View Code

注意:若服务器需要同时响应多个客户端请求,每个连接都需要一个新进程或新线程处理,否则服务器一次只能服务一个客户端

服务端代码

将从客户端接收到的字符前面加上 HELLO, 再发送回给客户端

 1 #!/usr/bin/python3
 2
 3 import socket
 4 import threading
 5 import time
 6
 7 def tcp_link(sock, addr):
 8     print('Accept new connection from %s %s...' % addr)
 9     sock.send('欢迎学习 python 网络编程'.encode('utf-8'))
10     while True:
11         data = sock.recv(1024)
12         time.sleep(1)
13         if not data or data.decode('utf-8') == 'exit':
14             break
15         sock.send(('HELLO, %s' % data.decode('utf-8')).encode('utf-8'))
16     sock.close()
17     print('Connection from %s : %s closed.' % addr)
18
19
20 def socket_server():
21     #创建一个 socket
22     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#SOCK_STREAM 指定使用面向流的 TCP 协议
23     #其中 AF_INET 指定使用 IPv4 协议,若要使用 IPv6 则指定该参数为 AF_INET6
24
25     #获取本地主机名
26     host = socket.gethostname()
27
28     #获取本地主机名
29     host = socket.gethostname()
30
31     #设置端口号
32     port = 9999
33
34     #监听端口
35     s.bind((host, port))
36
37     #设置最大连接数,超过后排队
38     s.listen(5)
39
40     while True:
41         #接受一个新连接
42         sock, addr = s.accept()
43         # 创建新线程处理TCP连接
44         t = threading.Thread(target = tcp_link, args = (sock, addr))
45         t.start()
46
47
48 def main():
49     socket_server()
50
51
52 if __name__ == '__main__':
53     main()

View Code

UDP 编程

 客户端代码

将键盘输入的字符发送到服务端,并将从服务端接收到的字符输出到终端

 1 #!/usr/bin/python3
 2
 3 import socket
 4
 5 def socket_udp_client():
 6     host = socket.gethostname()
 7     port = 9999
 8     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 9     while True:
10         data = input()
11
12         #发送数据
13         s.sendto(data.encode('utf-8'), (host, port))
14
15         #接收数据
16         print(s.recv(1024).decode('utf-8'))
17
18
19 def main():
20     socket_udp_client()
21
22
23 if __name__ == '__main__':
24     main()

View Code

服务端代码

将从客户端接收到的字符前面加上 hello, 再发送回给客户端

 1 #!/usr/bin/python3
 2
 3 import socket
 4
 5 def socket_udp_server():
 6     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #SOCK_DGRAM 参数指定 socket 的类型是 udp
 7     host = socket.gethostname()
 8     port = 9999
 9
10     #绑定端口
11     s.bind((host, port))
12
13     #不需要调用 listen 方法,直接接收来自任何客户端的数据
14
15     while True:
16         #接收数据
17         data, addr = s.recvfrom(1024)
18         #recvfrom 方法返回数据和客户端的地址与端口。这样,服务器收到数据后,直接调用 sendto 就可以把数据用 udp 发送给客户端
19         print('received from %s: %s.' % addr)
20         s.sendto(b'hello, %s' % data, addr)
21
22
23 def main():
24     socket_udp_server()
25
26
27 if __name__ == '__main__':
28     main()

View Code

转载于:https://www.cnblogs.com/geloutingyu/p/9191227.html

简单的 socket 代码相关推荐

  1. php运行socket服务器,PHP_php简单socket服务器客户端代码实例,本篇文章分享一个简单的socket - phpStudy...

    php简单socket服务器客户端代码实例 本篇文章分享一个简单的socket示例,用php.实现一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务. 产生一个 socket 服务端 /*文 ...

  2. java 通信 教程_Java实现简单的socket通信教程

    今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完善了. 今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有pa ...

  3. 简单的socket通信实现

    一.什么是socket网络通信? socket也称作"套接字",描述了计算机的IP地址和端口,运行在计算机中的程序之间采用socket进行数据通信.通信的两端都有socket,它是 ...

  4. Windows socket之最简单的socket程序

    Windows socket之最简单的socket程序 原文:Windows socket之最简单的socket程序 最简单的服务器的socket程序流程如下(面向连接的TCP连接 ): 1. WSA ...

  5. php 简单的socket,【技术产品】PHP如何实现简单的Socket

    [摘要] 对于初入门的php学习者肯定会有很多问题,今天考比过小编为大家整理了关于[技术产品]PHP如何实现简单的Socket的信息,希望可以帮助到大家.下面就让我们一起来看下[技术产品]PHP如何实 ...

  6. rust服务器配置文件,使用Rust编写一个简单的Socket服务器(1):Rust下的配置载入...

    前言 早在2020年12月的时候,那会儿我正在看The Rust Programming Language.而这本书最后的"结业"任务是要编写一个简单的Socket服务器,而于此同 ...

  7. 使用vb.net开发简单的socket通信

    使用vb.net开发简单的socket通信(环境是visual stdio 2019) 说明 参考文章 实现功能 效果展示 代码 服务端 客户端 总结 说明 之前用vb6编程时都是用的winsock控 ...

  8. 解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了

    解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了 2011-11-22 16:48        by        通用信息化建设平台,        1471       ...

  9. js php滚动图代码,JavaScript_JS实现的N多简单无缝滚动代码(包含图文效果),本文实例讲述了JS实现的N多简 - phpStudy...

    JS实现的N多简单无缝滚动代码(包含图文效果) 本文实例讲述了JS实现的N多简单无缝滚动代码.分享给大家供大家参考,具体如下: 实现原理很简单,注册事件之后,立即将元素的innerHTML累加一次. ...

  10. python画折线图代码-python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...

最新文章

  1. cygwin编译verilator_Windows 安装 verilator
  2. 一个函数让你看懂 'Why 0.1+0.2!=0.3'
  3. SpringBoot整合MongoDB(实现一个简单缓存)
  4. The authenticity of host 'github.com (52.74.223.119)' can't be established.
  5. 狂雨CMS小说采集规则 附教程
  6. linux缓冲区攻击实验报告,linux 下缓冲区溢出攻击原理及示例
  7. 获得BAT技术专家Offer,他到底做了什么?
  8. Android MonkeyRunner
  9. 黄冈a货翡翠,开封a货翡翠
  10. j2me模拟器linux,J2ME HELLOWORLD 小试牛刀(转)
  11. 接口设计方案——接口集成要求
  12. java mysql 分页_mysql分页查询总结
  13. FIORI静态磁贴配置
  14. 最长公共子序列(LCS) 过程图解
  15. PS27种图层混合模式
  16. 千锋Java第九周总结
  17. 榆熙电商:带你了解一下拼多多先用后付的知识
  18. 【Python】利用百度地图API获取多方式行程时间
  19. 解决win10系统中截图异常放大的问题 window10-win10 截图放大-缩放-问题解决办法
  20. [高通SDM450][Android9.0]刷机后RTC时钟不生效问题

热门文章

  1. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密|原创
  2. sphinx php 扩展安装
  3. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_14-页面静态化-数据模型-远程请求接口...
  4. 云接入时发现的一个问题,记录避免以后踩坑
  5. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析...
  6. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_10_反射_Class对象功能_获取Method成员方法...
  7. 利用Calendar类判断是平年还是闰年
  8. 王者荣耀交流协会Beta发布文案美工展示博客
  9. C++ 安全单例模式总结
  10. 20145202马超《java》实验5