我用winsock2.h發現了這個套接字代碼http://www.tidytutorials.com/2009/12/c-winsock-example-using-client-server.html這是我的客戶端的代碼。服務器winsock與QTcpServer之間的套接字交換
int hsock;
int * p_int ;
hsock = socket(AF_INET, SOCK_STREAM, 0);
///
char buffer[1024];
int buffer_len = 1024;
int bytecount;
int c;
memset(buffer, '\0', buffer_len);
for(char* p=buffer ; (c=getch())!=13 ; p++){
printf("%c", c);
*p = c;
}
if((bytecount=send(hsock, buffer, strlen(buffer),0))==SOCKET_ERROR){
代碼使用Qt QTcpServer既可類完成:
void FortuneThread::run()
{
QTcpSocket tcpSocket;
if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket.error());
cout<<"socket error"<<endl;
return;
}
char buffer[1024];
int buffer_len = 1024;
memset(buffer, 0, buffer_len);
strcat(buffer, " SERVER ECHO");
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << &socketDescriptor;
out << buffer;
out << strlen(buffer);
out << 0;
tcpSocket.write(block);
以上服務器的代碼是我失敗的嘗試,以配合客戶數據的服務器數據。哪裏不對? TY
什麼,確切地說,不工作?它沒有連接嗎?客戶是否接收到與預期不同的數據? – Elliott
是的,最後一件事:接收數據錯誤10053. – pazduha
您確定連接建立正確嗎?順便說一句,你已經提供了服務器和客戶端都發送,他們都沒有收到。 – Greg