2011-10-27 6 views
0

누구나 TCP 연결을 열고 데이터를 동시에 보내는 방법을 알려주시겠습니까? 다음과 같이 연결을 엽니 다. socket-> conectohost (host, port) 6 개의 정수를 연결하기 위해 함께 보내고 싶습니다. 고맙습니다.Qt에서 정수를 보내십시오

답변

1

아는 한 QTcpSocket을 통해 데이터를 보내기 전에 연결이 설정 될 때까지 기다려야합니다. 귀하의 유스 케이스에서 이와 같은 조합이 효과가 있습니까?

socket->connectToHost(...); 
if(socket->waitForConnected()) { 
    socket->write("my_data"); 
} 
+0

당신은 내가 연결하기 전에 연결하거나 연결을해야 다음 쓰기를 할 수 있습니까? 나에게 말하기 전에 기다려야할까요? – user950489

+0

@ user950489 : 서버가 바이트를 수신하는지 확인할 수 있습니다. 그러나 그럴 경우에도 강력히 권하고 싶습니다. 삐 소리가 나면서 상대방이 전화를 기다릴 때 전화 통화를 시작하지 마십시오. 더러운거야. - 당신은 아직 연결되어 있지 않은 포트에 데이터를 보냅니다. 연결이 설정 될 때까지 데이터가 대기 중인지 여부에 관계없이 서버의 OS에 따라 달라질 수 있습니다 ... 또는 데이터가 삭제되었는지, 연결이 아직 안되기 때문입니다. 아마도 당신은 왜 당신이 즉시 보내야하는지, 아마도 그것을 할 수있는 다른 좋은 방법이 있는지 우리에게 말해 줄 수 있습니다. – Robin

1
int array[] = {1,2,3,4,5,6}; 
int array_elements = sizeof(array)/sizeof(int); 

socket->connectToHost("example.com", 12345); 
if(socket->waitForConnected(1000)) { 
    qDebug("Connected."); 
    for(int n = 0; n < array_elements; n++) 
     socket->write((char*)(array + n * sizeof(int)), sizeof(int)); 
    qDebug("6 integers sent. Eat that."); 
    socket->disconnectFromHost(); 
} else { 
    qDebug("Timeout."); 
} 
+0

대단히 감사합니다. 그러나 이것처럼 소켓에 정수를 쓸 수는 없습니다 : socket-> write (array [i], sizeof (int)); 오류가 발생했습니다 : C : \ ejemplos_qt \ teratermobile-build-simulator \ .. \ teratermobile \ cliente.cpp : 99 : 오류 : 'QTcpSocket :: write (QString &, unsigned int)'호출에 일치하는 함수 없음 – user950489

+0

나는 소켓에 정수를 쓸 수 없다. 소켓 -> write (정수) – user950489

+0

맞다. 업데이트 된 답변을 확인하십시오. –

관련 문제