以下為linux作為客戶端的程式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include<stdlib.h>
int main(){
//創建套接字
int sock = socket(AF_INET, SOCK_STREAM, 0);
//向服務器(特定的IP和埠)發起請求
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr)); //每個位元組都用0填充
serv_addr.sin_family = AF_INET; //使用IPv4地址
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具體的IP地址
serv_addr.sin_port = htons(6000); //埠
int err=connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
if(err==-1)
{
printf("error\n");
}
else
{
printf("nice\n");
}
//讀取服務器傳回的資料
char readbuffer[100];
read(sock, readbuffer, sizeof(readbuffer)-1);
printf("Message form server: %s\n", readbuffer);
//給服務器發
char send[]="你也是";
write(sock,send,sizeof(send));
//關閉套接字
close(sock);
return 0;
}
Windows作為服務器
#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib") //需要加載 ws2_32.dll Windows系統網路編程庫
int main(){
//初始化 DLL庫
WSADATA wsaData;
WSAStartup( MAKEWORD(2, 2), &wsaData);
//創建套接字
SOCKET servSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//系結套接字
sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr)); //每個位元組都用0填充
sockAddr.sin_family = PF_INET; //使用IPv4地址
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具體的IP地址
sockAddr.sin_port = htons(6000); //埠
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
//進入監聽狀態
listen(servSock, 20);
//接收客戶端請求
SOCKADDR clntAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);
//向客戶端發送資料
char *str = "Hello World!";
send(clntSock, str, strlen(str)+sizeof(char), NULL);
char re[100];
recv(clntSock,re,sizeof(re),NULL);
//關閉套接字
closesocket(clntSock);
closesocket(servSock);
//終止 DLL 的使用
WSACleanup();
return 0;
}
先啟動Windows服務器,然后啟動Ubuntu客戶端運行結果如下:


請問怎么解決連接失敗這個問題呢?
uj5u.com熱心網友回復:
已經找到問題出在哪了。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/284712.html
標籤:應用程序開發區
