VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 270|回复: 5

SOCKET新手小问题

[复制链接]
01_avatar_middle
最佳答案
0 
在线会员 发表于 2020-12-7 16:40:24 | 显示全部楼层 |阅读模式

#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;
}

实在没找到 请大佬帮帮忙




上一篇:求助资源
下一篇:如何让编译器忽略无法解析的外部符号?
04_avatar_middle
最佳答案
9 
online_vip 发表于 2020-12-7 18:05:47 | 显示全部楼层
上面监听的端口是12345,下面连接的端口是12435,按键盘的时候手滑了?
01_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-7 20:07:43 | 显示全部楼层
xiao14116 发表于 2020-12-7 18:05
上面监听的端口是12345,下面连接的端口是12435,按键盘的时候手滑了?

那个我之前以为是端口问题 改了忘记改过来就复制过来了

改成相同的还是不行 错误码是10061
04_avatar_middle
最佳答案
9 
online_vip 发表于 2020-12-7 20:53:54 | 显示全部楼层
被防火墙或者是杀毒软件干掉了吧
01_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-12-7 21:32:51 | 显示全部楼层
xiao14116 发表于 2020-12-7 20:53
被防火墙或者是杀毒软件干掉了吧

百度也是这么说的。。。可我另一个这样的服务器和客户端就能用。。。。实在找不到问题了
19_avatar_middle
最佳答案
12 
在线会员 发表于 2020-12-8 04:59:28 | 显示全部楼层
本帖最后由 236a 于 2020-12-8 14:03 编辑

SOCKET新手小问题 SOCKET新手小问题 SOCKET新手小问题 SOCKET新手小问题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2021-3-4 05:42

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表