鱼C论坛

 找回密码
 立即注册
查看: 33|回复: 6

[已解决]孙鑫的VC++网络编程问题

[复制链接]
最佳答案
0 
发表于 2018-11-9 22:34:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
#include <WinSock2.h>
#include <stdio.h>

void main()
{
        WORD wVersionRequested;
        WSADATA wsaData;
        int err;

        wVersionRequested = MAKEWORD(1, 1);
        err = WSAStartup(wVersionRequested, &wsaData);
        if (0 != err)
        {
                return;
        }

        if (LOBYTE(wsaData.wVersion != 1) || HIBYTE(wsaData.wVersion) != 1)
        {
                WSACleanup();
                return;
        }
        SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
        SOCKADDR_IN addrSrv;
        addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
        addrSrv.sin_family = AF_INET;
        addrSrv.sin_port = htons(6253);

        bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
        listen(sockSrv, 5);

        SOCKADDR_IN addrClient;
        int len;
        len = sizeof(SOCKADDR);

        while (1)
        {
                SOCKET sockConn = accept(sockSrv, (sockaddr*)&addrClient, &len);
                char sendBuf[100] = {0};
               
                sprintf(sendBuf, "welcome %s to http://www.sunxin.org", inet_ntoa(addrClient.sin_addr));

                send(sockConn, sendBuf, strlen(sendBuf) + 1, 0);
                char recvBuf[100] = {0};

                recv(sockConn, recvBuf, 100, 0);
                printf("%s\n", recvBuf);
                closesocket(sockConn);

        }
       
}
这是服务器端代码
最佳答案
2018-11-9 23:41:12
  1.         if(LOBYTE(wsaData.wVersion != 1) || HIBYTE(wsaData.wVersion) != 1)
  2. 00DC5070 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  3. 00DC5077 83 F8 01             cmp         eax,1  
  4. 00DC507A 74 0C                je          main+78h (0DC5088h)  
  5. 00DC507C C7 85 9C FB FF FF 01 00 00 00 mov         dword ptr [ebp-464h],1  
  6. 00DC5086 EB 0A                jmp         main+82h (0DC5092h)  
  7. 00DC5088 C7 85 9C FB FF FF 00 00 00 00 mov         dword ptr [ebp-464h],0  
  8. 00DC5092 8B 8D 9C FB FF FF    mov         ecx,dword ptr [ebp-464h]  
  9. 00DC5098 81 E1 FF 00 00 00    and         ecx,0FFh  
  10. 00DC509E 0F B6 D1             movzx       edx,cl  
  11. 00DC50A1 85 D2                test        edx,edx  
  12. 00DC50A3 75 17                jne         main+0ACh (0DC50BCh)  
  13. 00DC50A5 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  14. 00DC50AC C1 E8 08             shr         eax,8  
  15. 00DC50AF 25 FF 00 00 00       and         eax,0FFh  
  16. 00DC50B4 0F B6 C8             movzx       ecx,al  
  17. 00DC50B7 83 F9 01             cmp         ecx,1  
  18. 00DC50BA 74 14                je          main+0C0h (0DC50D0h)  
  19.         {
  20.                 WSACleanup();
  21. 00DC50BC 8B F4                mov         esi,esp  
  22. 00DC50BE FF 15 FC B0 DC 00    call        dword ptr [__imp__WSACleanup@0 (0DCB0FCh)]  
  23. 00DC50C4 3B F4                cmp         esi,esp  
  24. 00DC50C6 E8 70 C0 FF FF       call        __RTC_CheckEsp (0DC113Bh)  
  25.                 return;
  26. 00DC50CB E9 AA 01 00 00       jmp         main+26Ah (0DC527Ah)  
  27.         }
复制代码

  1.         if((LOBYTE(wsaData.wVersion) != 1) || (HIBYTE(wsaData.wVersion) != 1))
  2. 001B5070 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  3. 001B5077 25 FF 00 00 00       and         eax,0FFh  
  4. 001B507C 0F B6 C8             movzx       ecx,al  
  5. 001B507F 83 F9 01             cmp         ecx,1  
  6. 001B5082 75 17                jne         main+8Bh (01B509Bh)  
  7. 001B5084 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  8. 001B508B C1 E8 08             shr         eax,8  
  9. 001B508E 25 FF 00 00 00       and         eax,0FFh  
  10. 001B5093 0F B6 C8             movzx       ecx,al  
  11. 001B5096 83 F9 01             cmp         ecx,1  
  12. 001B5099 74 14                je          main+9Fh (01B50AFh)  
  13.         {
  14.                 WSACleanup();
  15. 001B509B 8B F4                mov         esi,esp  
  16. 001B509D FF 15 FC B0 1B 00    call        dword ptr [__imp__WSACleanup@0 (01BB0FCh)]  
  17. 001B50A3 3B F4                cmp         esi,esp  
  18. 001B50A5 E8 91 C0 FF FF       call        __RTC_CheckEsp (01B113Bh)  
  19.                 return;
  20. 001B50AA E9 AA 01 00 00       jmp         main+249h (01B5259h)  
  21.         }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2018-11-9 22:35:41 | 显示全部楼层
本帖最后由 方小韩丶 于 2018-11-9 22:38 编辑

#include <WinSock2.h>
#include <stdio.h>

void main()
{
        WORD wVersionRequested;
        WSADATA wsaData;

        wVersionRequested = MAKEWORD(1, 1);
        int err = WSAStartup(wVersionRequested, &wsaData);

        if (err != 0)
        {
                return;
        }
       
        if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
        {
                WSACleanup();
                return;
        }

        SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);

        SOCKADDR_IN addrSrv;
        addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
        addrSrv.sin_family = AF_INET;
        addrSrv.sin_port = htons(6253);

        connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
       
        char recvBuf[100] = {0};
        recv(sockClient, recvBuf, 100, 0);
        printf("%s\n", recvBuf);

        send(sockClient, "This is ", strlen("This is ") + 1, 0);

        closesocket(sockClient);
        WSACleanup();
}
这是客户端的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2018-11-9 22:37:10 | 显示全部楼层
两个运行之后只有请按任意键继续是什么原因?再就是运行服务端的EXE秒退 感觉并不是一直循环啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
1 
发表于 2018-11-9 23:05:09 | 显示全部楼层
@BngThea 召唤大神,这种问题一般人答不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
413 
发表于 2018-11-9 23:36:44 | 显示全部楼层
  1.         //if(LOBYTE(wsaData.wVersion != 1) || HIBYTE(wsaData.wVersion) != 1)
  2.         if((LOBYTE(wsaData.wVersion) != 1) || (HIBYTE(wsaData.wVersion) != 1))
  3.         {
  4.                 WSACleanup();
  5.                 return;
  6.         }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
413 
发表于 2018-11-9 23:41:12 | 显示全部楼层    本楼为最佳答案   
  1.         if(LOBYTE(wsaData.wVersion != 1) || HIBYTE(wsaData.wVersion) != 1)
  2. 00DC5070 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  3. 00DC5077 83 F8 01             cmp         eax,1  
  4. 00DC507A 74 0C                je          main+78h (0DC5088h)  
  5. 00DC507C C7 85 9C FB FF FF 01 00 00 00 mov         dword ptr [ebp-464h],1  
  6. 00DC5086 EB 0A                jmp         main+82h (0DC5092h)  
  7. 00DC5088 C7 85 9C FB FF FF 00 00 00 00 mov         dword ptr [ebp-464h],0  
  8. 00DC5092 8B 8D 9C FB FF FF    mov         ecx,dword ptr [ebp-464h]  
  9. 00DC5098 81 E1 FF 00 00 00    and         ecx,0FFh  
  10. 00DC509E 0F B6 D1             movzx       edx,cl  
  11. 00DC50A1 85 D2                test        edx,edx  
  12. 00DC50A3 75 17                jne         main+0ACh (0DC50BCh)  
  13. 00DC50A5 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  14. 00DC50AC C1 E8 08             shr         eax,8  
  15. 00DC50AF 25 FF 00 00 00       and         eax,0FFh  
  16. 00DC50B4 0F B6 C8             movzx       ecx,al  
  17. 00DC50B7 83 F9 01             cmp         ecx,1  
  18. 00DC50BA 74 14                je          main+0C0h (0DC50D0h)  
  19.         {
  20.                 WSACleanup();
  21. 00DC50BC 8B F4                mov         esi,esp  
  22. 00DC50BE FF 15 FC B0 DC 00    call        dword ptr [__imp__WSACleanup@0 (0DCB0FCh)]  
  23. 00DC50C4 3B F4                cmp         esi,esp  
  24. 00DC50C6 E8 70 C0 FF FF       call        __RTC_CheckEsp (0DC113Bh)  
  25.                 return;
  26. 00DC50CB E9 AA 01 00 00       jmp         main+26Ah (0DC527Ah)  
  27.         }
复制代码

  1.         if((LOBYTE(wsaData.wVersion) != 1) || (HIBYTE(wsaData.wVersion) != 1))
  2. 001B5070 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  3. 001B5077 25 FF 00 00 00       and         eax,0FFh  
  4. 001B507C 0F B6 C8             movzx       ecx,al  
  5. 001B507F 83 F9 01             cmp         ecx,1  
  6. 001B5082 75 17                jne         main+8Bh (01B509Bh)  
  7. 001B5084 0F B7 85 5C FE FF FF movzx       eax,word ptr [wsaData]  
  8. 001B508B C1 E8 08             shr         eax,8  
  9. 001B508E 25 FF 00 00 00       and         eax,0FFh  
  10. 001B5093 0F B6 C8             movzx       ecx,al  
  11. 001B5096 83 F9 01             cmp         ecx,1  
  12. 001B5099 74 14                je          main+9Fh (01B50AFh)  
  13.         {
  14.                 WSACleanup();
  15. 001B509B 8B F4                mov         esi,esp  
  16. 001B509D FF 15 FC B0 1B 00    call        dword ptr [__imp__WSACleanup@0 (01BB0FCh)]  
  17. 001B50A3 3B F4                cmp         esi,esp  
  18. 001B50A5 E8 91 C0 FF FF       call        __RTC_CheckEsp (01B113Bh)  
  19.                 return;
  20. 001B50AA E9 AA 01 00 00       jmp         main+249h (01B5259h)  
  21.         }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2018-11-9 23:50:46 | 显示全部楼层

...可以了 谢谢老板
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-11-17 13:22

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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