python-Unix套接字

 1 #!/usr/bin/python
 2  #coding=utf-8
 3 #server
 4 import socket
 5 import sys
 6 import os
 7
 8 server_address = ‘./test‘
 9
10 #首先确保这个文件不能存在,只是用于本地套接字的通信,如果已经存在则不可以了
11 try:
12     os.unlink(server_address)  # 用于删除一个文件
13 except OSError:
14     if os.path.exists(server_address):
15         raise
16
17 sock = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
18
19 print >>sys.stderr,‘starting up on %s‘%server_address
20 sock.bind(server_address)
21 sock.listen(5)
22
23 while True:
24     print >>sys.stderr,‘waiting for a connection‘
25     connection,client_address = sock.accept()
26     try:
27         print >>sys.stderr,‘connection from‘,client_address
28         while True:
29             data = connection.recv(16)
30             print >>sys.stderr,‘received "%s"‘%data
31             if data:
32                 print >>sys.stderr,‘sending data back to the client‘
33                 connection.sendall(data)
34             else:
35                 print >>sys.stderr,‘no data from‘,client_address
36                 break
37     finally:
38         connection.close()
 1 #!/usr/bin/python
 2  #coding=utf-8
 3 #client
 4 import socket
 5 import sys
 6
 7 sock = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
 8 server_address = ‘./test‘  #本地套接字通讯是设置的不是IP而是一个文件
 9
10 print >>sys.stderr,‘connection to %s‘%server_address
11
12 try:
13     sock.connect(server_address)
14 except socket.error,msg:
15     print >>sys.stderr,msg
16     sys.exit(1)
17
18 try:
19     message = ‘This is the message.It will be repeated‘
20     print >>sys.stderr,‘sending "%s"‘%message
21     sock.sendall(message)
22
23     amount_received = 0
24     amount_expected = len(message)
25
26     while amount_received < amount_expected:
27         data = sock.recv(16)
28         amount_received += len(data)
29         print >>sys.stderr,‘received "%s"‘%data
30 finally:
31     print >>sys.stderr,‘closing socket‘
32     sock.close()
时间: 2024-10-10 17:32:53

python-Unix套接字的相关文章

Python sockset 套接字

什么是Python socket Socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用打开.读写.关闭模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭) so

Linux/UNIX套接字连接

套接字连接 套接字是一种通信机子.凭借这样的机制.客户/server系统的开发工作既能够在本地单机上进行.也能够夸网络进行. 套接字的创建和使用与管道是有差别的.由于套接字明白地将客户和server区分开来. 套接字连接: 首先,server应用程序用系统调用socket来创建一个套接字,它是系统分配给该server进程的类似文件描写叙述符的资源,它不能与其它进程共享. 接下来.server进程会给套接字起个名字.本地套接字的名字是Linux文件系统中的文件名称,对于网络套接字它的名字是与客户连

Python socket 套接字实现通信

首先:我们介绍一下socket什么是socket: 1. socket 在操作系统中它是处于应用层与传输层的抽象层,它是一组操作起来非常简单的接口(接收数据的),此接口接受数据之后交个操作系统 那么为什么?直接给操作系统不是更方便吗?那么你就想错了 因为操作系统的接口远比我们想象的要丑陋复杂,使用操作系统交换数据,非诚繁琐,,开发者们只能想办法让一个中间人和他们打交道,来简单的实现数据交换,那么就是socket套接字.它的作用就是:与操作系统之间数据交换将这些繁琐的操作,进行高度化封装,和简化,

Python原始套接字编程

在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_RAW进行数据发送. 使用SOCK_RAW的优势是,可以对数据包进行完整的修改,可以处理IP层上的所有数据包,对各字段进行修改,而不受UDP和TCP的限制. 下面开始构造HTTP数据包, IP层和TCP层使用python的Impacket库,http内容自行填写. 1 2 3 4 5 6 7 8 9

python socket 套接字编程 单进程服务器 实现多客户端访问

服务器: 1 import socket 2 #单进程服务器 实现多客户端访问 IO复用 3 #吧所有的客户端套接字 放在一个列表里面,一次又一次的便利过滤 4 #这就是apache: select模型 6 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7 server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #设置端口复用 8 #AF_INET: IPV4 9

一个基于Unix套接字的注册登录系统

2016/5/5 今天,我参考<Unix网络编程-卷1>第5章的TCP回射客户/服务器程序写了一个简单的注册登录系统,其功能如下:(1)注册.客户端向服务器发送个人信息请求注册,服务器查询MySQL数据库以检查该客户是否已存在,若是则禁止注册,并返回“用户已存在,注册失败”的错误信息,否则将新用户信息添加到MySQL数据库,并返回“注册成功”的信息.(2)登录.客户端向服务器发送个人账号和密码等两项信息,服务器查询MySQL数据库以检查账号是否存在.账号和密码是否匹配,若不存在或不匹配则禁止登

python socket 套接字编程

#!/usr/bin/python    #client   from socket import *    HOST = '127.0.0.1'  PORT = 21567  BUFSIZ = 1024  ADDR = (HOST,PORT)    tcpCliSock = socket(AF_INET, SOCK_STREAM)  tcpCliSock.connect(ADDR)  recv_s = tcpCliSock.recv(BUFSIZ)  print recv_s    try: 

Python套接字

1.客户端/服务器架构 什么是客户端/服务器架构?对于不同的人来说,它意味着不同的东西,这取决于你问谁以及描述的是软件还是硬件系统.在这两种情况中的任何一种下,前提都很简单:服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的"服务".它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求.另一方面,客户端因特定的请求而联系服务器,并发送必要的数据,然后等待服务器的回应,最后完成请求或给出故障的原因.服务器无限地运行下去,并不断地处理请求:而客户

UNIX 网络编程笔记-CH3:套接字编程简介

IPv4套接字地址结构 struct in_addr { in_addr_t s_addr; }; struct sockaddr_in { uint8_t sin_len; /* length of structure (16) bytes */ sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; /* 16-bit TCP/UDP port, network byte order(big-endian) */ struct in

Python网络编程—socket套接字编程(UDP)

套接字介绍 1.套接字 : 实现网络编程进行数据传输的一种技术手段 2.Python实现套接字编程:import socket 3.套接字分类 流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案.(面向连接--tcp协议--可靠的--流式套接字) 数据报套接字(SOCK_DGRAM):以数据报形式传输数据,实现udp网络传输方案.(无连接--udp协议--不可靠--数据报套接字) UDP套接字编程 服务端流程 1.创建数据报套接字 sockfd = socket