기본 Python 클라이언트 소켓 소켓
나는 소켓이 작동하는지에 대해 머리를 사용하려고 노력해 왔고 , 매우 간단한 클라이언트 소켓 프로그램 을 위해이 페이지 에서 몇 가지 가지 샘플 코드를 쪼개려고 노력하고 있습니다. 다음과 같은 메시지가 나타납니다.
file "client.py", 4 행, client_socket.connect (( 'localhost', 5000)) 파일 "", 1 행, connect socket.error : [Errno 111] 연결이 거부되었습니다.
나는이 오류의 거의 모든 부분을 검색하는 문제를 사용하는 사람들은 '바인딩'대신 '연결'및 기타 몇 가지 가지를 사용하여 포트 번호를 변경하여 도움을받은 것입니다. 제 상황에 적용되었습니다. 나는 네트워크 프로그래밍에 매우 익숙하고 능숙하게 익숙하기 때문에 어떤 도움을 대단히 감사합니다.
그렇고, 어떤 경우에는 링크가 작동하지 않는 경우 코드입니다.
#client example
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 5000))
while 1:
data = client_socket.recv(512)
if ( data == 'q' or data == 'Q'):
client_socket.close()
break;
else:
print "RECIEVED:" , data
data = raw_input ( "SEND( TYPE q or Q to Quit):" )
if (data <> 'Q' and data <> 'q'):
client_socket.send(data)
else:
client_socket.send(data)
client_socket.close()
break;
포트 5000에서 실행중인 컴퓨터에 연결을 시도하고 시도 연결이 거부됩니다. 서버가 실행되고 있습니까?
없는 경우 테스트에 사용할 수 있습니다 .netcat
nc -l -k -p 5000
구현에서는 일부 -p
플래그 를 생략해야 우리 할 수 있습니다 .
다음은 가장 간단한 소켓입니다.
서버 측 :
import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections
while True:
connection, address = serversocket.accept()
buf = connection.recv(64)
if len(buf) > 0:
print buf
break
고객 입장에서 :
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 8089))
clientsocket.send('hello')
- 먼저 SocketServer.py를 실행하고 서버가 sth를 수신 / 수신 할 준비가되었는지 확인하십시오.
- 그런 다음 클라이언트는 서버에 정보를 보냅니다.
- 서버가 sth를 수신 한 후 종료됩니다.
여기 아주 간단한 소켓 프로그램이 있습니다. 이것은 소켓이 얻는 것만 큼 간단합니다.
클라이언트 프로그램 용 (CPU 1)
import socket
s = socket.socket()
host = '111.111.0.11' # needs to be in quote
port = 1247
s.connect((host, port))
print s.recv(1024)
inpt = raw_input('type anything and click enter... ')
s.send(inpt)
print "the message has been sent"
4 행의 111.111.0.11을 두 번째 컴퓨터 네트워크 설정에서 찾은 IP 번호로 바꿔야합니다.
서버 프로그램 용 (CPU 2)
import socket
s = socket.socket()
host = socket.gethostname()
port = 1247
s.bind((host,port))
s.listen(5)
while True:
c, addr = s.accept()
print("Connection accepted from " + repr(addr[1]))
c.send("Server approved connection\n")
print repr(addr[1]) + ": " + c.recv(1026)
c.close()
서버 프로그램을 실행 한 다음 클라이언트 프로그램을 실행하십시오.
클라이언트가 존재하지 않는 서버에 연결을 시도하는 것 같습니다. 셸 창에서 다음을 실행합니다.
$ nc -l 5000
Python 코드를 실행하기 전에 연결할 수 있도록 포트 5000에서 수신 대기하는 서버 역할을합니다. 그런 다음 Python 창에 입력하고 다른 터미널에 나타나는 것을 볼 수 있으며 그 반대의 경우도 마찬가지입니다.
실행과 컴파일을 혼동 할 수 있습니다. 파이썬에는 컴파일 단계가 없습니다! :) 입력하자마자 python myprogram.py
프로그램이 실행되고, 귀하의 경우 열린 포트 5000에 연결을 시도하여 서버 프로그램이 수신 대기하지 않으면 오류가 발생합니다. 실행 파일을 생성하기 위해 컴파일이 필요한 2 단계 언어에 익숙한 것 같습니다. 따라서 Python의 런타임 컴파일러에서 "나는 포트 5000에서 수신하는 사람을 찾을 수 없습니다!"라고 혼동하고 있습니다. 컴파일 타임 오류가 있습니다. 그러나 실제로 Python 코드는 괜찮습니다. 실행하기 전에 청취자를 불러 오면됩니다!
참고 URL : https://stackoverflow.com/questions/7749341/basic-python-client-socket-example
'ProgramingTip' 카테고리의 다른 글
NSString의 마지막 문자를 확인하는 방법 (0) | 2020.11.29 |
---|---|
Modernizr 파일을 헤드에 배치해야합니까? (0) | 2020.11.29 |
Python의 for 루프에서 목록 요소를 제거하는 방법은 무엇입니까? (0) | 2020.11.29 |
편집 할 수 없어야하는 EditText 안에 상수 텍스트 삽입 -Android (0) | 2020.11.29 |
R에서 각각 고유 한 색상으로 여러 선 (데이터 시리즈) 플로팅 (0) | 2020.11.29 |