鱼C论坛

 找回密码
 立即注册
查看: 1885|回复: 0

socket 10038 10093问题

[复制链接]
发表于 2015-8-4 21:14:15 | 显示全部楼层 |阅读模式

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

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

x

#include <Winsock2.h>  
#include <Windows.h>
#include <stdio.h>  
#include <stdlib.h>  
#include "resource.h"
#include <tchar.h>

#pragma comment(lib,"ws2_32.lib")

#define DEFAULT_PORT 5150 //服务端默认端口              

SOCKET 套接字;
SOCKET NEWSOCKET;

       
int CALLBACK proca(HWND hdlg, UINT umsg ,WPARAM wparam,LPARAM lparam)
{

       
               
        BOOL BRet=TRUE;
        TCHAR 原文本[10000];

        LPWSTR 连接文本;
WSADATA  wsadata;
SOCKADDR_IN 服务器地址;
int 客户长度;
SOCKADDR_IN 客户端地址;
         int 是否成功;
        // SOCKET 套接字;
         

         char 文本[100];
         DWORD 数字=100;
         char 数据大小[1024];

         //用来储存调用AfxSocketInit全局函数返回的Windows Sockets初始化信息
        switch(umsg)
        {   
        case WM_CLOSE:
                EndDialog(hdlg,0);
                break;
        case  WM_COMMAND://这个消息处理是 相应按钮的各种事件
                switch(LOWORD(wparam))
                {
                case initialize:
                        //初始化套接字
    /*SetDlgItemText(hdlg,IDC_EDIT1,TEXT("我是帅哥123\r\n"));
        GetDlgItemText(hdlg,IDC_EDIT1,sa,100);
        lstrcat(sa,sb);
        SetDlgItemText(hdlg,IDC_EDIT1,sa);*/
  
        if (WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
           //初始化套接字
                SetDlgItemText(hdlg,IDC_EDIT1,TEXT("初始化套接字失败请重新尝试\r\n"));
               
     else
                SetDlgItemText(hdlg,IDC_EDIT1,TEXT("初始化套接字成功\r\n"));
        break;

        case setup:

                套接字=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
                if (套接字==INVALID_SOCKET)
                {
                        GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
          连接文本=L"创建套接字失败\r\n";
                lstrcat(原文本,连接文本);
                SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                WSACleanup();
                return -1;
                }
                else
                       
                {
                        GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                                连接文本=L"创建套接字成功\r\n";
                        lstrcat(原文本,连接文本);
                        SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                        break;
                }

        //创建套接字
       
        case dkport:
               
                服务器地址.sin_family=AF_INET;
                //设置协议
                服务器地址.sin_port=htons(DEFAULT_PORT);
                //设置端口,并且是设置为网络字节顺序
                服务器地址.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
                //设置本机地址,并且设定为无限制网络连接 任何人都可以与本程序联机

                if (bind(套接字,(SOCKADDR*)&服务器地址,sizeof(服务器地址))==SOCKET_ERROR)
                       
                {
                        数字=GetLastError();
                        itoa(数字, 文本, 10);
                        MessageBoxA(hdlg,文本,"s",MB_OK);

                        GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                        连接文本=L"绑定端口失败\r\n";
                        lstrcat(原文本,连接文本);
                        SetDlgItemText(hdlg,IDC_EDIT1,原文本);
               
                        closesocket(套接字);
                        WSACleanup();
                        return -1;
                        //关闭套接字
                }
                else{
                        GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                        连接文本=L"绑定端口成功\r\n";
                        lstrcat(原文本,连接文本);
                        SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                        break;
                }



        case IDC_listen:

                if (listen(套接字,10)==SOCKET_ERROR)
                {

                        数字=GetLastError();
                        itoa(数字, 文本, 10);
                        MessageBoxA(hdlg,文本,"s",MB_OK);

                        GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                        连接文本=L"启动监听失败\r\n";
                        lstrcat(原文本,连接文本);
                        SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                        closesocket(套接字);
                        WSACleanup();
                        return -1;
                        //关闭套接字
                }
                else{
               
                        GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                        连接文本=L"启动监听...\r\n";
                        lstrcat(原文本,连接文本);
                        SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                        SetWindowText(hdlg,TEXT("启动监听/"));
               
                        break;
                }




       
                case IDC_ljclient:

               
                客户长度=sizeof(SOCKADDR);
      if ( NEWSOCKET=accept(套接字,(SOCKADDR*)&客户端地址,&客户长度)==INVALID_SOCKET)

      {
                  GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                  连接文本=L"新客户连接失败\r\n";
                  lstrcat(原文本,连接文本);
                  SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                  closesocket(套接字);
                  WSACleanup();
                  return -1;
                  //关闭套接字
      }
   
          else{
                  GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                  连接文本=L"成功连接新的客户\r\n";
                  lstrcat(原文本,连接文本);
                  SetDlgItemText(hdlg,IDC_EDIT1,原文本);

                  
                  break;
          }


                  case IDC_khxx:

                        if (BRet=recv(NEWSOCKET,数据大小,sizeof(数据大小),0)==SOCKET_ERROR)

                        {

                                数字=GetLastError();
                                itoa(数字, 文本, 10);
                                MessageBoxA(hdlg,文本,"s",MB_OK);


                                GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                                连接文本=L"接受客户数据失败\r\n";
                                lstrcat(原文本,连接文本);
                                SetDlgItemText(hdlg,IDC_EDIT1,原文本);
                                closesocket(套接字);
                                WSACleanup();
                                return -1;

                        }


                        else{
                                GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                                连接文本=L"接受客户数据成功\r\n";
                                lstrcat(原文本,连接文本);
                                SetDlgItemText(hdlg,IDC_EDIT1,原文本);


                                GetDlgItemText(hdlg,IDC_EDIT1,原文本,sizeof(原文本));
                                数据大小[BRet]='\0';


                                连接文本=(LPWSTR)数据大小;
                                lstrcat(原文本,连接文本);
                                SetDlgItemText(hdlg,IDC_EDIT1,原文本);




                                break;
                        }


}


       
    default:
                BRet=FALSE;
                break;       

        }
        return BRet;
}
int  WinMain(HINSTANCE hInstance,HINSTANCE hprevinstance,
        PSTR szCmdline,int iCmdshow)
{
        DialogBox(hInstance,MAKEINTRESOURCE(ZMAIN),NULL,proca);
        return 0;
}


真的是欲哭无泪了  这个代码 到了recv()这一步问题就来了 点击一下recv对应的按钮吧 先是提升错误代码10038  在非套接字上操作,之后了就都提示错误码10093  套接字没初始化 实在是不知道咋个解决了 求大神看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 05:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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