首页 > 代码库 > python-Unix套接字

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 = http://www.mamicode.com/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 = http://www.mamicode.com/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()

 

python-Unix套接字