1. 环境准备
(1) vmware workstation上启动两台虚拟机 rhel5.0 server i386, 每台都有网卡,且配置为NAT方式(因为在学校做实验,用学校的DHCP设备分配IP需要学号/密码验证,而我只有一个学号密码,用Bridge方式只能分配一个IP;故只能采用NAT方式,因为这种方式的DHCP服务器上宿主物理机上虚拟出来的)
(2) 设置网卡配置文件以DHCP方式获取到IP地址
cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp
(3) 重启网络服务
service network restart
(4) 注意需要把服务器端的防火墙关闭
service iptables stop
2. TCP socket服务器
select服务器
# -*- coding: gb18030 -*- import socket, select host = socket.gethostname() port = 1234 s = socket.socket() s.bind((host, port)) s.listen(5) inputs = [s] while True: rs, ws, es = select.select(inputs, [], []) for r in rs: if r is s: #r是"服务器端的监听套接字" c, addr = s.accept() print 'Got connection from ', addr inputs.append(c) else: #r是"服务器端的套接字" try: data = r.recv(1024) disconnected = not data except socket.error: disconnected = True if disconnected: print r.getpeername(), 'disconnected' inputs.remove(r) else: print data
asyncore服务器(用async_chat处理连接会话)
# -*- coding: gb18030 -*- from asyncore import dispatcher from asynchat import async_chat import socket, asyncore #select在linux和widows上都可以用 #poll在windows上不能用,而且asyncore.loop()中好像用到了poll PORT = 5005 NAME = "TestChat" class ChatSession(async_chat): '''处理服务器和一个用户之间连接的类''' def __init__(self, server, sock): async_chat.__init__(self, sock) self.server = server #在session中关联server self.set_terminator("\r\n") self.data = [] self.push("Welcome to %s"%self.server.name) def collect_incoming_data(self, data): self.data.append(data) def found_terminator(self): '''如果发现了一个终止对象,也就发现了一个完整的行,将其广播给所有人''' line = ''.join(self.data) self.data = [] self.server.broadcast(line) def handle_close(self): async_chat.handle_close(self) self.server.disconnect(self) class ChatServer(dispatcher): '''接受连接并且产生单个会话的类。它会处理其他会话的广播''' def __init__(self, port, name): dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.set_reuse_addr() self.bind(('',port)) self.listen(5) self.name = name self.sessions = [] #在server中关联session def broadcast(self, line): for session in self.sessions: session.push(line + "\r\n") def handle_accept(self): conn, addr = self.accept() self.sessions.append(ChatSession(self, conn)) if __name__ == "__main__": s = ChatServer(PORT, NAME) try: asyncore.loop() except KeyboardInterrupt: print
3. TCP socket客户机
import socket import time host = socket.gethostname() port = 1234 s = socket.socket() s.connect((host, port)) while True: str_to_server = raw_input("send sth. to server: ") s.send(str_to_server) #print s.recv(1024)
参考文档
socket — Low-level networking interface: http://docs.python.org/2/library/socket.html
socket programing HOWTO: http://docs.python.org/2/howto/sockets.html
python网络编程 http://www.cnblogs.com/hnrainll/archive/2012/10/25/2738094.html
相关推荐
进一步理解和掌握基于Python进行TCP套接字编程的知识,理解SMTP报文格式,能基于Python编写一个简单的SMTP客户端程序。 2实验条件 装有python环境的电脑两台 局域网环境 已经正常运行的邮件服务器 3实验报告内容及...
用Python套接字实现服务器和客户端的一对多通信,使用多线程库实现,可以把客户端程序传到另外一台电脑实现通信
本文实例讲述了Python网络编程之TCP套接字简单用法。分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而java则一知半解,C写起来又麻烦,所以一直都没有真正实现过TCP套接字编程。...
用Python实现的一个简单的TCP套接字通信,能够实现简单的用户和服务器进程互相通信功能,二者可以通过端口和ip地址连接,利用本demo可以实现一个简易的双人聊天功能。
在本实验中,将学习Python中TCP连接的套接字编程的基础知识:如何创建套接字,将其绑定到特定的地址和端口,以及发送和接收HTTP数据包。你还将学习一些HTTP首部格式的基础知识。 你将开发一个处理一个HTTP请求的Web...
TCP聊天文件服务器v2.2 - 服务端客户端套接字解决分包/粘包问题 - SocketQueue继承以及减少冗余 包括py文件, ui, 以及杂七杂八的东西...
TCP-IP-服务器-客户端-Python TCP / IP服务器客户端Python 可以将套接字配置为充当服务器并侦听传入的消息,或者作为客户端连接到其他应用程序。 连接TCP / IP套接字的两端后,将进行双向通信。
这部分主要使用的模块就是 socket 模块,在这个模块中可以找到 socket()函数,该函数用于创建套接字对象,套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信。 socket()模块函数 要创建套接字,必须...
创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 # tcp_socket.connect((192.168.33.11, 7890)) server_ip = input(请输入要链接的服务器的ip:) server_...
第一次实验内容是:使用Python3 实现TCP全连接端口扫描器;第二次实验内容是:用户从客户端进行登录后,可以进行从服务端下载文件;第三次实验内容是:多线程TCP端口扫描。最后课程设计是《多功能服务端与客户端》,...
超快速和低延迟异步套接字服务器和客户端 C# 库,支持 TCP、SSL、UDP 协议和解决方案。 内容 示例:UDP 回显客户端 示例:UDP 多播服务器 示例:UDP 多播客户端 表现 基准:往返 TCP 回显服务器 SSL 回显服务器 UDP...
有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字。 TCP通信模型 创建TCP服务器 伪代码: ss = socket() # 创建服务器套接字 ss.bind() # 套接字与地址绑定 ss.listen() # 监听连接 inf_loop: # ...
1.创建一个TCP客户端套接字 2.写一个接收消息的方法,可以接收客户端消息并解码输出 3.客户端被动监听,每有一个客户端连接就创建一个子线程执行接收消息方法 代码实现 # 导入模块 import socket import ...
Python套接字TCP 它是如何工作的 python套接字的实现,用于与多个客户端通信服务器。...服务器此服务器运行套接字服务器,它从客户端接收消息(一个json文件)并保存,如果成功保存了json文件,则将消息发送到客户端
接受连接(仅适用于服务器端):使用accept()函数接受客户端的连接请求,并返回一个新的套接字对象以供与客户端进行通信。 连接远程服务器(仅适用于客户端):客户端使用connect()函数与服务器端建立连接,指定...
这是一个应用层协议,由TCP连接承载,旨在通过发送开始、结束和控制字节,以及定义和处理不同类型的错误,将简单的套接字流转换为传输长文件的可靠方式。 这个异步服务器能够管理多个连接。 服务端: python ...
网络通讯使用客户端/服务器通信使用TCP进行通讯数据以字节形式发送的格式开发环境代码的Python 3.7.8 Python库的:套接字和随机有用的网站未来的工作添加工作界面使其成为连接可以成为对等连接的地方添加更多游戏以...
**主要是客户端界面更改** 1. 注册, 登录界面 (都知道啊, `v1.8`的改进后输入用户名, 到了主界面的时候才能输入密码, 但现在是直接输入用户名和密码, 然后转为json, 等待回复) 2. 转到注册 (我用了`...