客户端像服务器端发送数据: 服务器:192.168.1.101:1234 本地端口4444(本地地址可不设置,端口由系统自动设置) #include <QtCore/QCoreApplication> #include <QDebug> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); int skt = socket(AF_INET, SOCK_STREAM, 0); // local address (optional) sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(4444); localaddr.sin_addr.s_addr = INADDR_ANY; memset(localaddr.sin_zero, 0, sizeof(localaddr.sin_zero)); bind(skt, (sockaddr *)&localaddr, sizeof(localaddr)); // remote(server) address sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(1234); char ipAddr[] = "192.168.1.101"; inet_pton(AF_INET,ipAddr ,&addr.sin_addr); memset(addr.sin_zero, 0, sizeof(addr.sin_zero)); int r = connect(skt, (sockaddr *)&addr, sizeof(addr)); qDebug() << r; char data[] = "hello world!"; send(skt, data, sizeof(data), MSG_CONFIRM); return a.exec(); } 作为服务器端: 端口地址1234 #include <QtCore/QCoreApplication> #include <QDebug> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #include <sys/wait.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); int skt = socket(AF_INET, SOCK_STREAM, 0); // local address(server port) sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(1234); localaddr.sin_addr.s_addr = INADDR_ANY; memset(localaddr.sin_zero, 0, sizeof(localaddr.sin_zero)); bind(skt, (sockaddr *)&localaddr, sizeof(localaddr)); // qDebug() << "bind" << listen(skt,100); while(true) { sockaddr_in clientaddr; unsigned addrlen; int client = accept(skt, (sockaddr*)&clientaddr, &addrlen); qDebug() << "accept:" << client; int pid = fork(); if(pid < 0) { qDebug() << "child process error."; } else if(pid == 0) { // child process char buffer[100]; int dataLen = recv(client, buffer, sizeof(buffer), MSG_WAITALL); qDebug() << "data length:" << dataLen; for(int i = 0; i < dataLen; i++) { qDebug() << buffer[i]; } close(client); } else { close(client); int status; waitpid(pid, &status, 0); } } return a.exec(); }