`
shopscor
  • 浏览: 20048 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Python Socket写的简单Server

阅读更多
文章来自:http://hi.baidu.com/yobin/blog/item/572e554e51648f0fb3de05d9.html

一、python server(代码是蓝色部分,注释为黑色字体)

#!/usr/bin/python
import socket
import re
import os


#第一步是创建socket对象。调用socket构造函数 socket = socket.socket( family, type )
#family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
#type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。
a=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#第二步是将socket绑定到指定地址。这是通过socket对象的bind方法来实现的:socket.bind( address )
#由AF_INET所创建的套接字,address地址必须是一个双元素元组,格式是(host,port)。host代表主机,port代表端口号。如果端口号正在使用、主机名不正确或端口已被保留,bind方法将引发socket.error异常。
a.bind(("127.0.0.1",8888))

#第三步是使用socket套接字的listen方法接收连接请求。socket.listen( backlog )
#backlog指定最多允许多少个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。
a.listen(1)

#循环监听
while(1):
#第四步是服务器套接字通过socket的accept方法等待客户请求一个连接。connection, address = socket.accept()
#调用accept方法时,socket会时入“waiting”状态。客户请求连接时,方法建立连接并返回服务器。
#accept方法返回一个含有两个元素的 元组(connection,address)。第一个元素connection是新的socket对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。
cs,ca=a.accept()

#第五步是处理阶段,服务器和客户端通过send和recv方法通信(传输数据)。
#调用recv 时,服务器必须指定一个整数,它对应于可通过本次方法调用来接收的最大数据量。recv方法在接收数据时会进入“blocked”状态,最后返回一个字符串,用它表示收到的数据。如果发送的数据量超过了recv所允许的,数据会被截短。多余的数据将缓冲于接收端。以后调用recv时,多余的数据会从缓冲区删除(以及自上次调用recv以来,客户可能发送的其它任何数据)。
cs.settimeout(120) #设置超时
msg=cs.recv(1024)

if msg== '1':
    connection.send('welcome to server!')
print ca
print msg


fname=re.compile("GET\s+([^\s]+)\s+").match(msg).groups()[0]
if(fname=="/"):fname="/index.html"
fpathname= os.getcwd()+fname
try:
   f=open(fpathname,"rb")

#服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。
   cs.send(f.read())
   f.close()
except(Exception) :

#服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。
   cs.send("\n\n\ncan not find page"+fname+"\n");
#传输结束,服务器调用socket的close方法关闭连接。
cs.close()

=============================================
二、Python写的Socket Client端
Client端可以是浏览器,如IE、Firefox,也可以是手机或别的,下面是在本地写的Pyton的一个Socket Client端。

import socket,time

#创建一个socket以连接服务器:socket = socket.socket( family, type )
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#使用socket的connect方法连接服务器
sock.connect(('127.0.0.1', 8888))

time.sleep(2)


#处理阶段,客户和服务器将通过send方法和recv方法通信。
sock.send('1')
print sock.recv(1024)


#传输结束,客户通过调用socket的close方法关闭连接。
sock.close()
分享到:
评论

相关推荐

    Python Socket模块实现服务端与客户端通信

    Python Socket模块是网络编程的基础,它提供了低级别的、原始的TCP/IP套接字接口,用于在客户端和服务器之间建立通信。Socket模块使得Python程序员能够轻松地处理网络通信,包括创建和管理TCP、UDP等不同协议的连接...

    python_socket_server

    python socket 服务器端代码demon

    python socket server

    python socket server 小例子

    基于python的socket实现单机五子棋到双人对战

    本文将详细介绍如何利用Python中的socket库实现一个简单的五子棋游戏,并将其从单机版扩展为支持两人在线对战的版本。通过这个过程,我们将学习到Python中的socket编程基础、多线程处理以及如何设计一个简单的网络...

    Python 通过 socket 实现服务端和客户端相互间网络通信的例子

    本例中,我们探讨的是如何使用Python的socket库创建一个简单的服务端(server.py)和客户端(client.py)来实现双向通信。 1. **Python socket基础知识**: - `socket`模块提供了低级网络通信接口,它是基于...

    Dos.rar_nine44k_python_python socket_python socket聊天_python聊天室

    本项目" Dos.rar_nine44k_python_python socket_python socket聊天_python聊天室"正是基于Python的socket模块实现的一个多人在线聊天室,让我们来深入探讨这个话题。 首先,我们要理解什么是Python的socket。Socket...

    利用Python SOCKET多线程开发FTP软件

    接下来,我们将详细介绍如何使用Python的socket库和多线程技术来实现一个简单的FTP服务器端和客户端。 ##### 1. 服务器端设计 **初始化服务器:** - 导入必要的模块:`import socket`, `import os`, `import ...

    python socket 石头剪刀布游戏_socket_python_MYSQL_

    在Python编程领域,Socket是用于网络通信的一种基础模块,它允许程序通过网络发送和接收数据。在这个项目中,我们利用Python的socket库构建了一个石头剪刀布(RPS,Rock-Paper-Scissors)游戏,同时结合了MySQL...

    Python Socket多人聊天编程

    本项目"Python Socket多人聊天编程"是基于Python实现的一个简单的多用户聊天系统,它利用了socket进行数据传输,并通过多线程技术实现了同时处理多个客户端连接的能力。 首先,我们来详细了解一下`socket`模块。...

    pythonsocket

    - 使用`select.select(rlist, wlist, xlist[, timeout])`函数来监控指定的socket列表是否可读、可写或发生错误。 ##### Example7-6. 使用select模块处理多个socket ```python import socket import select # 创建...

    python;Socket接口;测试脚本直接运行

    下面是一个简单的服务器端(server.py)示例: ```python import socket # 创建一个TCP/IP socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定到所有可用IP和指定端口 server_address = ('...

    Python写的多线程socket连接的demo

    而多线程则是解决并发问题的一种有效手段,特别是在处理大量并发连接时,如本示例中的"Python写的多线程socket连接的demo"。这个demo展示了如何在Python中同时启动数百个线程来建立socket连接,从而实现高并发的服务...

    python的socket编程

    本文将深入探讨如何使用Python进行socket编程,特别是创建一个简单的图形界面socket聊天程序。 #### Socket编程基础 在深入聊天程序之前,我们首先来了解一下socket编程的基础概念。Socket可以分为两种类型:TCP和...

    Python socket实现多对多全双工通信的方法

    服务器:#server.py #!/usr/bin/env python #-*-coding:utf-8-*- import sys import struct#将字符串打包为二进制流进行网络传输 import select# import signal#用于捕获中断信号 import cPickle#将python对象进行...

    python socket编程实例(服务端及客户端)

    Python的socket库提供了强大的功能,可以构建各种网络应用程序,包括简单的聊天应用、文件传输、HTTP服务器等。理解并熟练掌握socket编程是成为合格的网络程序员的基础。通过这个实例,你可以进一步探索网络编程的...

    Python聊天室 (socket tkinter)

    【Python聊天室 (socket tkinter)】是一个基于Python编程语言实现的简单聊天应用程序,它结合了socket库进行网络通信,tkinter库创建图形用户界面(GUI),以及threading库实现多线程来同步处理用户交互和网络活动。...

    用python的socket实现的简易聊天室.rar

    本项目"用python的socket实现的简易聊天室.rar"是作者基于Python标准库socket创建的一个简单聊天室,适用于初学者理解socket编程原理。下面我们将深入探讨Python中的socket模块及其在构建聊天室中的应用。 首先,...

    python socket C-S 模型例子

    Python的Socket库是进行网络通信的基础模块,它允许程序员创建客户端和服务器端的连接,实现C-S(客户端-服务器)模型。在这个例子中,我们将深入探讨如何使用Python Socket实现一个多线程服务器来同时处理多个...

    Python实现socket非阻塞通讯功能示例

    Python是一种广泛用于网络编程的语言,而socket是非阻塞通信的基础。这篇文章会详细探讨如何使用Python实现socket非阻塞通信,并结合示例分析其原理、多线程以及客户端和服务器端的具体实现技巧。 首先,了解socket...

    Python的Socket连接例子(包含多线程例子)

    在Python编程中,Socket是网络通信的基础,它允许程序通过网络发送和接收...在"多线程.py"、"Server.py"和"Client.py"这些文件中,你将看到如何将这些概念付诸实践,从而更好地理解和掌握Python的Socket和多线程编程。

Global site tag (gtag.js) - Google Analytics