2011-12-04 2 views
0

메신저에 대해 배우려는 메신저와 IP 포트에 연결할 수 없습니다.소켓 - 파이썬을 연결하려고 할 때 소켓 오류가 발생합니다.

스티의 소켓 테스트 도구

import socket 

print "send request to website to check if sockets work right" 
ip = raw_input("website ip: ") 
port = raw_input("website port: ") 
socket.connect(ip, port) 
tosend = "this is a test" 
currVal = 0 
while currVal < 1: 
    socket.send(tosend) 
    print "1 sockets sent..." 
    currrVal += 1 
print "Done sending sockets. This hopefully worked" 

는 파이썬 코드와 아무 잘못이 : 이 내가 가진 스크립트입니다? 이것은 ipv4 또는 ipv6에서만 작동합니까? 아니면 둘 다 작동합니까?

오류 IM은 방법 :

C:\Users\Swipper\Documents\Python\sockets>sock.py 
send request to website to check if sockets work right 
website ip: 127.0.0.1 
website port: 
Traceback (most recent call last): 
    File "C:\Users\Swipper\Documents\Python\sockets\sock.py", line 8, in <modu 
le> 
    socket.connect(ip, port) 
AttributeError: 'module' object has no attribute 'connect' 

희망 누군가가 답을 알고있다.

PS : 저는 python 2.7을 사용합니다!

-stian

+2

귀하의 질문은 모호합니다. 정확한 오류를 포함하십시오. –

답변

2

먼저 소켓 객체를 만들어야합니다

s = socket.socket() 
s.connect((ip, int(port)) 

대신 :

socket.connect(ip, port) 

그런 다음 s.send를 사용하는 등

3

당신이 전화하는거야을 .connect() 개체 대신 모듈에. 먼저 socket.socket()을 통해 소켓 객체를 인스턴스화해야합니다. 그런 다음 반환 된 개체에 .connect()을 호출 할 수 있습니다.

s = socket.socket() 
s.connect((ip, int(port)) 
+0

포트가 필수입니까, 선택 사항입니까? – Stian

+0

물론 필요합니다. 파이썬이 연결할 포트를 어떻게 알 수 있습니까? 매우 드문 경우 (비 -TCP/UDP 프로토콜)에서는이 문제를 무시할 수도 있지만, 그렇지는 않습니다. –

0

연결 호출의 인수가 튜플이 아니어야합니까?

socket.connect((ip, port)) 

그리고 send 호출의 반환 값을 확인하십시오.

또한 뭔가를받지 않는 한 상대방이 연결을 닫았는지 알 수 없습니다. 수신이 연결이 닫혔는지를 확인하는 유일한 방법입니다.

편집 : 다른 사람들과 마찬가지로 소켓 개체를 만들어야합니다.

+0

오류를 읽으세요? –

+0

@TomvanderWoerdt 아니요, 답변을 게시 할 때까지 편집을 보지 못했습니다. 그러나 나는 아직도 내가 두 가지 좋은 점을 제기한다고 느낀다. –

관련 문제