|
#include<WinSock2.h>
#include<stdio.h>
#include<Windows.h>
#pragma comment (lib,"WS2_32.lib")
void Error(char* str) {
printf("%s失败 错误码为%d",str ,WSAGetLastError());
WSACleanup();
exit(0);
}
int main() {
//第一步打开WSAStartup
WORD wdVersion = MAKEWORD(2,2);
WSADATA WsaData = { 0 };
int Ret = WSAStartup(wdVersion,&WsaData);
if (!Ret) printf("0");
else Error("建立",0);
//创建socket
SOCKET ServerSock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (ServerSock == INVALID_SOCKET) {
Error("socket创建");
}
else printf("1");
//创建sockaddr_in 结构体
SOCKADDR_IN sockaddr_in = { 0 };
sockaddr_in.sin_family = AF_INET;
sockaddr_in.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockaddr_in.sin_port = htons("12345");
//bind
Ret = bind(ServerSock, (struct sockaddr *)&sockaddr_in,sizeof(SOCKADDR_IN));
if (Ret == SOCKET_ERROR) {
closesocket(ServerSock);
Error("bind");
}
else printf("2");
//listen
Ret = listen(ServerSock, SOMAXCONN);
if (Ret == SOCKET_ERROR) {
closesocket(ServerSock);
Error("listen");
}
else printf("3");
//accept
SOCKADDR_IN client_addr ;
int len = sizeof(client_addr);
SOCKET client_sock = accept(ServerSock, (struct sockaddr *)&client_addr, &len);
if (client_sock != INVALID_SOCKET) {
char send_msg[1500] = { "hello 客户端\n" };
send(client_sock, send_msg, sizeof("hello 客户端\n"), 0);
}
char recv_msg[1500] = { 0 };
recv(ServerSock, recv_msg,1499,0);
printf("%S", recv_msg);
closesocket(ServerSock);
closesocket(client_sock);
WSACleanup();
return 0;
}
想问一下我这段服务器代码我用客户端连接不上
客户端代码用的下面这里
#include<stdio.h>
#include<WinSock2.h>
#pragma comment (lib,"WS2_32.lib")
int main() {
WORD wdVersion = MAKEWORD(2, 2);
WSADATA lpWsMsg;
int WsRet = WSAStartup(wdVersion, &lpWsMsg);
if (!WsRet) {
printf("建立成功\n");
}
else
{
WSACleanup();
printf("错误码为%d\n", WSAGetLastError());
}
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
printf("sock创建失败\n错误码为%d\n", WSAGetLastError());
WSACleanup();
return 0;
}
else {
printf("sock创建完成\n");
}
SOCKADDR_IN si_sever = { 0 };
si_sever.sin_family = AF_INET;
si_sever.sin_port = htons(12435);
si_sever.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (!connect(sock, (SOCKADDR*)&si_sever, sizeof(SOCKADDR_IN))) {
char str_recv[1500] = { 0 };
int length_recv = recv(sock, str_recv, 1499, NULL);
printf("%s (%d)\n", str_recv, length_recv);
send(sock, "你好 我是客户端", sizeof("你好 我是客户端"), 0);
}
else
{ //CONNECT错误返回值为SOCKET_ERROR
printf("connect失败,错误码为%d\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
getchar();
return 0;
}
closesocket(sock);
WSACleanup();
getchar();
return 0;
}
实在没找到 请大佬帮帮忙 |
上一篇: 求助资源下一篇: 如何让编译器忽略无法解析的外部符号?
|