简单的 socket 代码
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 代码相关推荐
- php运行socket服务器,PHP_php简单socket服务器客户端代码实例,本篇文章分享一个简单的socket - phpStudy...
php简单socket服务器客户端代码实例 本篇文章分享一个简单的socket示例,用php.实现一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务. 产生一个 socket 服务端 /*文 ...
- java 通信 教程_Java实现简单的socket通信教程
今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完善了. 今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有pa ...
- 简单的socket通信实现
一.什么是socket网络通信? socket也称作"套接字",描述了计算机的IP地址和端口,运行在计算机中的程序之间采用socket进行数据通信.通信的两端都有socket,它是 ...
- Windows socket之最简单的socket程序
Windows socket之最简单的socket程序 原文:Windows socket之最简单的socket程序 最简单的服务器的socket程序流程如下(面向连接的TCP连接 ): 1. WSA ...
- php 简单的socket,【技术产品】PHP如何实现简单的Socket
[摘要] 对于初入门的php学习者肯定会有很多问题,今天考比过小编为大家整理了关于[技术产品]PHP如何实现简单的Socket的信息,希望可以帮助到大家.下面就让我们一起来看下[技术产品]PHP如何实 ...
- rust服务器配置文件,使用Rust编写一个简单的Socket服务器(1):Rust下的配置载入...
前言 早在2020年12月的时候,那会儿我正在看The Rust Programming Language.而这本书最后的"结业"任务是要编写一个简单的Socket服务器,而于此同 ...
- 使用vb.net开发简单的socket通信
使用vb.net开发简单的socket通信(环境是visual stdio 2019) 说明 参考文章 实现功能 效果展示 代码 服务端 客户端 总结 说明 之前用vb6编程时都是用的winsock控 ...
- 解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了
解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了 2011-11-22 16:48 by 通用信息化建设平台, 1471 ...
- js php滚动图代码,JavaScript_JS实现的N多简单无缝滚动代码(包含图文效果),本文实例讲述了JS实现的N多简 - phpStudy...
JS实现的N多简单无缝滚动代码(包含图文效果) 本文实例讲述了JS实现的N多简单无缝滚动代码.分享给大家供大家参考,具体如下: 实现原理很简单,注册事件之后,立即将元素的innerHTML累加一次. ...
- python画折线图代码-python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
最新文章
- cygwin编译verilator_Windows 安装 verilator
- 一个函数让你看懂 'Why 0.1+0.2!=0.3'
- SpringBoot整合MongoDB(实现一个简单缓存)
- The authenticity of host 'github.com (52.74.223.119)' can't be established.
- 狂雨CMS小说采集规则 附教程
- linux缓冲区攻击实验报告,linux 下缓冲区溢出攻击原理及示例
- 获得BAT技术专家Offer,他到底做了什么?
- Android MonkeyRunner
- 黄冈a货翡翠,开封a货翡翠
- j2me模拟器linux,J2ME HELLOWORLD 小试牛刀(转)
- 接口设计方案——接口集成要求
- java mysql 分页_mysql分页查询总结
- FIORI静态磁贴配置
- 最长公共子序列(LCS) 过程图解
- PS27种图层混合模式
- 千锋Java第九周总结
- 榆熙电商:带你了解一下拼多多先用后付的知识
- 【Python】利用百度地图API获取多方式行程时间
- 解决win10系统中截图异常放大的问题 window10-win10 截图放大-缩放-问题解决办法
- [高通SDM450][Android9.0]刷机后RTC时钟不生效问题
热门文章
- 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密|原创
- sphinx php 扩展安装
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_14-页面静态化-数据模型-远程请求接口...
- 云接入时发现的一个问题,记录避免以后踩坑
- 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析...
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_10_反射_Class对象功能_获取Method成员方法...
- 利用Calendar类判断是平年还是闰年
- 王者荣耀交流协会Beta发布文案美工展示博客
- C++ 安全单例模式总结
- 20145202马超《java》实验5