2014-09-02 3 views
1

나는 네트워크 배치를 위해 SCTP를 테스트하려고 노력 해왔다. SCTP 서버 나 클라이언트가 없어서 pysctp를 사용할 수 있기를 바랬습니다.파이썬 sctp 모듈 - 서버 측

나는 클라이언트 측 코드가 작동한다는 것을 확신한다.

def sctp_client(): 
    print("SCTP client") 
    sock = sctp.sctpsocket_tcp(socket.AF_INET) 
    #sock.connect(('10.10.10.70',int(20003))) 
    sock.connect(('10.10.10.41',int(21000))) 
    print("Sending message") 
    sock.sctp_send(msg='allowed') 
    sock.shutdown(0) 
    sock.close() 

아무도 서버 측에서 python sctp 모듈을 사용하여 운이 좋았습니까? 미리 감사드립니다.

+1

문제가 무엇 : 속히

, 여기에 코드 ... HTH입니까? –

답변

1

이 주제는 약간 날짜가 맞았지만 어쨌든 커뮤니티에 도움을 줄 것이라고 생각했습니다. 간단히 말해서

: 당신이 클라이언트 또는 서버 중 하나를 만들기 위해 소켓 패키지 pysctp를 사용하는

  • ;
  • 따라서 일반 TCP 연결을 사용하는 경우와 마찬가지로 서버 연결을 만들 수 있습니다.

시작하기에 약간의 코드가 있지만 약간 자세한 정보이지만 전체 연결, 전송, 수신 및 연결 종료를 보여줍니다.

dev 컴퓨터에서 실행 한 다음 ncat (nmap의 구현이 netcat)과 같은 도구 (예 : ncat --sctp localhost 80)를 사용하여 연결할 수 있습니다.

# Here are the packages that we need for our SCTP server           
import socket                     
import sctp                      
from sctp import *                    
import threading                     

# Let's create a socket:                   
my_tcp_socket = sctpsocket_tcp(socket.AF_INET)             
my_tcp_port = 80                    

# Here are a couple of parameters for the server             
server_ip  = "0.0.0.0"                  
backlog_conns = 3                    

# Let's set up a connection:                  
my_tcp_socket.events.clear()                  
my_tcp_socket.bind((server_ip, my_tcp_port))              
my_tcp_socket.listen(backlog_conns)                

# Here's a method for handling a connection:              
def handle_client(client_socket):                
    client_socket.send("Howdy! What's your name?\n")            
    name = client_socket.recv(1024) # This might be a problem for someone with a reaaallly long name. 
    name = name.strip()                   

    print "His name was Robert Paulson. Er, scratch that. It was {0}.".format(name)    
    client_socket.send("Thanks for calling, {0}. Bye, now.".format(name))       
    client_socket.close()                   

# Now, let's handle an actual connection:              
while True:                      
    client, addr = my_tcp_socket.accept()              
    print "Call from {0}:{1}".format(addr[0], addr[1])           

    client_handler = threading.Thread(target = handle_client,         
             args = (client,))          
    client_handler.start()