python编写socket服务器和客户端

本次使用的主要模块是socket模块,在这个模块中可以找到socket()函数,该函数用于创建套接字对象。套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信。

socket()模块函数

要创建套接字,必须使用socket.socket()函数,语法如下:

socket(socket_family,socket_type,protocol=0)

其中socket_family是AF_UNIX(基于文件)或AF_INET(面向网络),socket_type是SOCK_STREAM(TCP)或SOCK_DGRAM(UDP),protocol通常省略,默认为0

示例:创建TCP/IP套接字:

tcpSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

创建UDP/IP套接字:

udpSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

创建TCP时间戳服务器和客户端

# 服务器
from socket import * 
from time import ctime

host = ‘‘                                         # 为空表示可以使用任何可用地址
port = 21567                                      # 监听端口
bufsiz = 1024                                     # 缓冲区大小
addr = (host,port)

tcpSerSock = socket(AF_INET,SOCK_STREAM)          # 分配TCP服务器套接字
tcpSerSock.bind(addr)                             # 绑定服务器地址
tcpSerSock.listen(5)                              # 开启TCP监听器调用

try:
    while True:                                   # 进入循环,等待客户端连接
        print ‘waiting for connection...‘
        tcpCliSock,addr = tcpSerSock.accept()     # 出现连接请求
        print ‘...connection from:‘,addr

        while True:
            data = tcpCliSock.recv(bufsiz)        # 获取消息
	    if not data:                          # 消息为空,就退出
	        break
	    tcpCliSock.send(‘[%s] %s‘%(ctime(),data)) # 消息存在,则加上时间戳并返回数据
        tcpCliSock.close()
    
except KeyboardInterrupt:                         # ctrl+c退出
    print ‘you have CTRL+C,quit now‘
    tcpSerSock.close()
# 客户端
from socket import *

host = ‘localhost‘                                # host,port为服务器主机名和端口
port = 21567
bufsiz = 1024
addr = (host,port)

tcpCliSock = socket(AF_INET,SOCK_STREAM)          # 分配TCP客户端套接字
tcpCliSock.connect(addr)                          # 主动调用并连接服务器

try:
    while True:
        data = raw_input(‘> ‘)                    # 输入字符串
        if not data:
	    break
        tcpCliSock.send(data)                     # 发送到服务器
        data = tcpCliSock.recv(bufsiz)            # 获取服务器数据
        if not data:
	    break
        print data

except KeyboardInterrupt:
    print ‘you have CTRL+C,quit now‘
    tcpCliSock.close()

执行TCP服务器和客户端

# 客户端
[[email protected] python]# python tcp_client.py 
> hi
[Thu Aug 11 11:11:04 2016] hi
> welcome!
[Thu Aug 11 11:11:10 2016] welcome!
>
# 服务器端
[[email protected] python]# python tcp_server.py 
waiting for connection...
...connection from: (‘127.0.0.1‘, 52900)
waiting for connection...

创建UDP时间戳服务器和客户端

# 服务器
from socket import * 
from time import ctime

host = ‘‘
port = 21567
bufsiz = 1024
addr = (host,port)

udpSerSock = socket(AF_INET,SOCK_DGRAM)            # 分配UDP服务器套接字
udpSerSock.bind(addr)                              # UDP是无连接的,所以不需要监听

try:
    while True:
        print ‘waiting for message...‘
        data,addr = udpSerSock.recvfrom(bufsiz)    # 获取消息,处理并返回客户端
        udpSerSock.sendto(‘[%s] %s‘%(ctime(),data),addr)
        print ‘...received from and return to:‘,addr

except KeyboardInterrupt:
    print ‘you have CTRL+C,quit now‘
    udpSerSock.close()
# 客户端
from socket import * 

host = ‘localhost‘
port = 21567
bufsiz = 1024
addr = (host,port)

udpCliSock = socket(AF_INET,SOCK_DGRAM)           # 分配UDP套接字

try:                       
    while True:                                   # 工作方式几乎与TCP客户端一样
        data = raw_input(‘> ‘) 
        if not data:
	    break
        udpCliSock.sendto(data,addr)
        data,addr = udpCliSock.recvfrom(bufsiz)
        if not data:
            break
        print data

except KeyboardInterrupt:
    print ‘you have CTRL+C,quit now‘
    udpCliSock.close()

执行结果

# 客户端
[[email protected] python]# python udp_client.py 
> 123
[Thu Aug 11 11:23:01 2016] 123
> hello
[Thu Aug 11 11:23:04 2016] hello
>
# 服务器端
[[email protected] python]# python udp_server.py 
waiting for message...
...received from and return to: (‘127.0.0.1‘, 55532)
waiting for message...
...received from and return to: (‘127.0.0.1‘, 55532)
waiting for message...
时间: 2024-08-25 22:24:45

python编写socket服务器和客户端的相关文章

Python 绝技 —— UDP 服务器与客户端

i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 -- TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演示了 TCP 服务器与客户端的通信过程. 本篇将按照同样的套路,先介绍传输层的另一个核心协议 UDP,再比较 TCP 与 UDP 的特点,最后借助 Python 脚本演示 UDP 服务器与客户端的通信过程. 0x01 UDP 协议 UDP(User Datagram Protocol,用户数据报协议

异步Socket服务器与客户端

本文灵感来自Andre Azevedo 在CodeProject上面的一片文章,An Asynchronous Socket Server and Client,讲的是异步的Socket通信. Socket连接(Socket Connection) Socket服务(Socket Service) 连接主机(Connection Host) 加密与压缩(Encrypt与Compress) 请求入队(Enqueuing Requests) 确保发送和接收(Ensure send and recie

php编写tcp服务器和客户端程序

这是我从别的地方看到的. 1.修改php.ini,打开extension=php_sockets.dll 2.客户端程序 SocketClient.php <?php set_time_limit(0); $host = "127.0.0.1"; $port = 3046; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)or die("Could not create socket\n"); $co

一个 Java 的 Socket 服务器和客户端通信的例子

http://blog.csdn.net/defonds/article/details/7971259 多个客户端对应一个服务端的通信的一个小例子.  服务端和客户端代码: public class Server { /** * 监听的端口 */ public static final int PORT = 12345; public static void main(String[] args) { System.out.println("服务器启动>>>>>&

python socket 服务器和客户端

一.服务器端的实现: __author__ = socket threading tcplink(sock, addr):     (% addr)     sock.send()     :         data = sock.recv()         .sleep()         data data.decode() == :             sock.send((% data.decode()).encode())     sock.close()     (% add

python twisted socket 服务端 客户端

使用twisted搭建socket的服务器,并能给客户端发送消息, 比较简单,直接上代码 #coding=utf-8 '''用于实现给响应客户端的请求,并且可以给客户发送消息,''' from twisted.internet import reactorfrom twisted.internet.protocol import Protocol, Factoryimport timeimport thread #线程体,def timer(no, interval):    while Tru

Delhi socket服务器和客户端互操作

SOCKET TCP procedure idtcpsrvr1Execute(AThread: TIdPeerThread); procedure idtcpsrvr1Connect(AThread: TIdPeerThread); idtcpsrvr1: TIdTCPServer; idtcpclnt1: TIdTCPClient; client: 连接服务器->发送数据消息 //连接服务器 idtcpclnt1.Host:='127.0.0.1'; idtcpclnt1.Port:=168;

Linux_C socket 服务器与客户端交互程序(输入小写转换为大写)

client.c 1 /* interactionSocket/client.c 2 * 实现终端与服务器端的交互式输入输出 3 */ 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 #include <unistd.h> 8 #include <sys/types.h> 9 #include <sys/socket.h> 10 #include &

Python 3 socket编程

Python 3 socket编程 一 客户端/服务器架构 互联网中处处是C/S架构 1.C/S结构,即Client/Server(客户端/服务器)结构 2.在互联网中处处可见c/s架构 比如说浏览器,在线视频,各种社交软件. C/S架构与socket的关系: 我们学习socket就是为了c/s架构的开发 学习socket一定要先学习互联网协议: 1.如何基于socket编程,来开发一款自己的C/S架构软件 2..C/S架构的软件(软件属于应用层)是基于网络进行通信的 3.网络的核心即一堆协议,