http://openexperience.iteye.com/blog/145701 javaeye
python
编写server的步骤:
-
第一步是创建socket
对象。调用socket
构造函数。如:
socket
= socket
.socket
( family, type )
family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。
-
第二步是将socket
绑定到指定地址。这是通过socket
对象的bind
方法来实现的:
socket
.bind
( address )
由AF_INET所创建的套接字,address地址必须是一个双元素元组,格式是(host,port)。host代表主机,port代表端口号。如果端口号正在使用、主机名不正确或端口已被保留,bind
方法将引发socket
.error异常。
-
第三步是使用socket
套接字的listen
方法接收连接请求。
socket
.listen
( backlog )
backlog指定最多允许多少个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。
-
第四步是服务器套接字通过socket
的accept
方法等待客户请求一个连接。
connection, address = socket
.accept
()
调 用accept
方法时,socket
会时入“waiting”状态。客户请求连接时,方法建立连接并返回服务器。accept
方法返回一个含有两个元素的 元组(connection,address)。第一个元素connection是新的socket
对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。
- 第
五步是处理阶段,服务器和客户端通过send和recv方法通信(传输
数据)。服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。服务器使用recv方法从客户接收信息。调用recv
时,服务器必须指定一个整数,它对应于可通过本次方法调用来接收的最大数据量。recv方法在接收数据时会进入“blocked”状态,最后返回一个字符
串,用它表示收到的数据。如果发送的数据量超过了recv所允许的,数据会被截短。多余的数据将缓冲于接收端。以后调用recv时,多余的数据会从缓冲区
删除(以及自上次调用recv以来,客户可能发送的其它任何数据)。
- 传输结束,服务器调用socket
的close方法关闭连接。
python
编写client的步骤:
- 创建一个socket
以连接服务器:socket
= socket
.socket
( family, type )
-
使用socket
的connect方法连接服务器。对于AF_INET家族,连接格式如下:
socket
.connect( (host,port) )
host代表服务器主机名或IP,port代表服务器进程所绑定的端口号。如连接成功,客户就可通过套接字与服务器通信,如果连接失败,会引发socket
.error异常。
- 处理阶段,客户和服务器将通过send方法和recv方法通信。
- 传输结束,客户通过调用socket
的close方法关闭连接。
下面给个简单的例子:
server.py
python
代码
-
if
__name__
== '
__main__
':
-
import
socket
-
sock = socket
.
socket
(
socket
.AF_INET,
socket
.SOCK_STREAM)
-
sock.bind
(('localhost', 8001))
-
sock.listen
(5)
-
while
True
:
-
connection,address = sock.accept
()
-
try
:
-
connection.settimeout(5)
-
buf = connection.recv(1024)
-
if
buf == '1':
-
connection.send('welcome to server!')
-
else
:
-
connection.send('please go out!')
-
except
socket
.timeout:
-
print
'
time
out'
-
connection.close
()
client.py
python
代码
-
if
__name__
== '
__main__
':
-
import
socket
-
sock = socket
.
socket
(
socket
.AF_INET,
socket
.SOCK_STREAM)
-
sock.connect(('localhost', 8001))
-
import
time
-
time
.sleep(2)
-
sock.send('1')
-
print
sock.recv(1024)
-
sock.close
()
在终端运行server.py,然后运行clien.py,会在终端打印“welcome to
server!"。如果更改client.py的sock.send('1')为其它值在终端会打印”please go
out!“,更改time.sleep(2)为大于5的数值, 服务器将会超时。
分享到:
相关推荐
在Python中,创建一个socket对象是网络编程的第一步,通常使用`socket.socket()`函数来完成。你可以指定socket的类型,如SOCK_STREAM(对应TCP)或SOCK_DGRAM(对应UDP)。 二、TCP网络编程 1. 创建Socket:首先,...
一个简单的Python Socket编程示例,包括一个简单的服务器和客户端。 解释说明: 服务器端代码: 使用 socket.socket() 创建一个新的socket对象 server_socket,参数 socket.AF_INET 表示使用IPv4地址族,socket....
本文将深入探讨如何使用Python进行socket编程,特别是创建一个简单的图形界面socket聊天程序。 #### Socket编程基础 在深入聊天程序之前,我们首先来了解一下socket编程的基础概念。Socket可以分为两种类型:TCP和...
Python的socket编程实例为开发者提供了一个直观的学习窗口,通过这些实例,开发者可以加深对网络通信和网络协议的理解。掌握socket编程对于那些希望深入学习网络编程的Python爱好者来说,是一个重要的里程碑。
Python异步Socket编程代码,对想学习python socket的人有用
附件是一个简单的 Python socket 编程的例子,包括一个服务器端和一个客户端。 附件代码在实际使用中可能需要进行错误处理和异常管理的增强,以确保程序的健壮性。此外,服务器端代码中的 while True 循环会无限期...
这些基础知识将帮助学习者更好地理解网络编程的原理以及Python中socket编程的实现方式。 Python编程语言是通用的,解释性的,并且具有良好的可移植性。Python的解释性允许开发者在不编译代码的情况下直接运行程序,...
Python 网络编程_python网络编程_socket Python 网络编程是指使用 Python 语言进行网络通信编程,...Python 网络编程是 Python 语言中的一个重要组成部分,提供了许多有用的功能和接口,方便开发者快速实现网络服务。
Python的socket库是进行网络通信的基础模块,它提供了低级别的、原始的套接字接口,...理解并熟练掌握socket编程是成为合格的网络程序员的基础。通过这个实例,你可以进一步探索网络编程的奥秘,不断拓展自己的技能树。
- 1bit滑动窗口是最简单的形式,只允许发送一个数据帧,发送后必须等待接收方确认才能发送下一个。 2. **TCP与滑动窗口**: - TCP提供了面向连接的服务,包括可靠的数据传输和流控,滑动窗口是其流控机制的一部分...
本项目"Python Socket多人聊天编程"是基于Python实现的一个简单的多用户聊天系统,它利用了socket进行数据传输,并通过多线程技术实现了同时处理多个客户端连接的能力。 首先,我们来详细了解一下`socket`模块。...
三、Pythonsocket模块3.1、基本的Pythonsocket模块3.2、Socket模块3.3、SocketServer模块前提条件创建和销毁socketSocket地址服务器socket客户机socket流socketI/O数据报socketI/Osocket选项异步I/O四、构建一个...
Pythonsocket网络编程 socket编程也叫套接字编程,应用程序可以通过它发送或者接受数据,可对其像打开文件一样打开/关闭/读写等操作. 套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信. 网络套...
通过这个过程,我们将学习到Python中的socket编程基础、多线程处理以及如何设计一个简单的网络应用程序。 #### 技术栈与环境 - **Python版本**:推荐使用Python 3.x。 - **开发工具**:推荐使用PyCharm或VS Code等...
Python提供了socket模块,可以非常方便的进行socket编程。 创建一个server socket 使用socket方法创建一个新的socket,通常提供两个参数,第一个参数是address family, 第二个是socket type。 #create an INET, ...
理解Python和C的Socket编程是构建网络应用的基础,无论是简单的命令行交互,还是复杂的分布式系统,都能从中受益。通过这些基础知识,你可以创建自己的网络服务器和客户端,实现跨平台的数据交换。在实际项目中,还...
python简介,使用_Python_进行_socket_编程
以下是一个简单的UDP客户端示例: ```python import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_host_post = ('127.0.0.1', 8080) client_data = input("请输入:").encode...
计算机网络的最终任务,使用Python Socket编程实现一个简单的FTP服务器-简单FTP服务器
在Python编程中,Socket是网络通信的基本模块,用于实现不同计算机之间的数据传输。本文将深入讲解如何使用Python的Socket库来传输大文件。文件传输在许多应用中都是必不可少的,例如分布式系统、文件共享和备份等。...