python网络编程【一】
2024-09-24 23:50:19
TCP/IP 是标准的协议,它可以使用世界范围内的计算机通过Internet或本地的网络通信
1.编写一个TCP客户端程序
#!/usr/bin/env python import socket, sys port = 70
host = sys.argv[1]
filename = sys.argv[2] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port)) s.sendall(filename+ "\r\n") while 1:
buf = s.recv(2048)
if not len(buf):
break;
sys.stdout.write(buf)
这段代码实现的是Gopher协议,一种Web出现之前在Internet上非常流行的协议。这个程序需要两个命令行参数:主机名和文件名,实现从主机上请求相关文档的功能。
操作很简单,通过调用socket.socket()来建立一个socket,里面的参数告诉系统需要一个Internet socket来进行TCP通信,接着程序连接远程主机并提供文件名。最后获得响应,并把内容打印出来。
运行以下命令:python f:\python\gopherclient.py quux.org /,您将得到Gopher服务器根目录文件列表
2.编写一个服务器端程序
#!/usr/bin/env python
#coding:utf-8 import socket host= '' #主机名设置成空字符串,代表这个服务器可以接受来自任意地方的连接
port = 51423 s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #把socket设置成可复用的(可选)
s.bind((host, port)) #绑定主机和端口号
s.listen(1) #设置一次最多只监听一个连接 print "Server is running on port %d" % port while 1:
clientsock, clientaddr = s.accept() #当客户端连接时,accept会返回两个信息一个客户端socket和客户端ip,端口号
"""
这里使用了一个文件类对象,从客户端读取一个字符串,显示一个应答,最后关闭文件类对象和客户端socket
"""
clientfile = clientsock.makefile('rw', 0)
clientfile.write("Welcome," +str(clientaddr)+"\n")
clientfile.write("Please enter a string:")
line = clientfile.readline().strip()
clientfile.write("You entered %d characters.\n" % len(line))
clientfile.close()
clientsock.close()
首先运行服务端,然后在cmd中输入telnet localhost 51423连接服务端,会得到以下结果:
你也许会发现我没有编写telnet协议,但是telnet客户端也能通信。
最新文章
- js中字符串相关知识点总结
- JsTree实现简单的CRUD
- struts2+hibernate+poi导出Excel实例
- eclipse插件开发中全局对象的获取
- 使用Hadoop打造私有云盘之API操作
- RSA 加解密 签名 示例
- cocos2d-x学习日志(10) --射击游戏(喵星战争)
- CoreSeek Sphinx 安装
- Weka开发[4]-特征选择
- docker registry私有仓库部署
- Oracle联机日志损坏解决办法
- bzoj3702二叉树 线段树合并
- Java8 按照类属性去重
- linux系统版本查看
- 矢量图形(vector graphics)和位图图像(bitmap)以及分辨率概念
- TCP/IP 笔记 - TCP保活机制
- 引用数据类型 Scanner和 Random
- db2 表空间容量
- 学习笔记:webpack
- YII创建应用
热门文章
- Learn GIT
- mysql 5.7.16安装与给远程连接权限
- Python if 和 for 的多种写法
- DAL.SQLHelper 的类型初始值设定项引发异常的处理
- [地图SkyLine二次开发]框架(3)
- MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
- 在web.xml注册applicationContext.xml配置文件
- Struts2标签之Checkbox
- 20145224&;20145238 《信息安全系统设计基础》 第五次实验
- java_ee_sdk-7u2的安装与 启动