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()