나는 지난 몇 시간 동안 간단한 서버/클라이언트 유닉스 소켓 예제를 찾고 있었다. 파이썬 2.X에 대한 예제를 발견했지만 파이썬 3.X에서 작동하는 파이썬을 찾는데 실패하고 있습니다.파이썬 3.X 유닉스 소켓 예제
계속 TypeErrors가 발생합니다.
내가 작업 한 예는 다음과 같습니다
client.py
클라이언트 부분으로# -*- coding: utf-8 -*-
import socket
import os
# import os, os.path
print("Connecting...")
if os.path.exists("/tmp/python_unix_sockets_example"):
client = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
client.connect("/tmp/python_unix_sockets_example")
print("Ready.")
print("Ctrl-C to quit.")
print("Sending 'DONE' shuts down the server and quits.")
while True:
# try:
x = input("> ")
if "" != x:
print("SEND:", x)
client.send(x)
if "DONE" == x:
print("Shutting down.")
break
# except KeyboardInterrupt, k:
# print("Shutting down.")
client.close()
else:
print("Couldn't Connect!")
print("Done")
- , 나는 KeyboardInterupt 3에서 작업하는 방법을 확실하지 않았다 .X, 그래서 나는 Try와 Except 부분을 죽였다. 어떤 충고?
- 또한 사용 된 예제의 구문은 하나의 가져 오기에서 여러 모듈을로드했습니다. import os, os.path os 모듈에서 os.path를로드하는 오래된 방법입니까?
server.py
# -*- coding: utf-8 -*-
import socket
import os
# import os, os.path
# import time
if os.path.exists("/tmp/python_unix_sockets_example"):
os.remove("/tmp/python_unix_sockets_example")
print("Opening socket...")
server = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
server.bind("/tmp/python_unix_sockets_example")
print("Listening...")
while True:
datagram = server.recv(1024)
if not datagram:
break
else:
print("-" * 20)
print(datagram)
if "DONE" == datagram:
break
print("-" * 20)
print("Shutting down...")
server.close()
os.remove("/tmp/python_unix_sockets_example")
print("Done")
나는이 내가 얻을 실행하면 형식 오류 : 'STR'는 버퍼 인터페이스를 지원하지 않습니다.
파이썬 3.4 유닉스 소켓은 바이너리 만 지원합니까?
이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?
미리 감사드립니다. 당신이해야 할 수 있습니다
www.velvetcache.org의 John Hobbs의 도움을 받아 필자는 Python 3.4에서 위의 작업을 수행 할 수있었습니다. 도와 줘서 고마워 존! https://gist.github.com/jmhobbs/11276249 – Timis