VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 763|回复: 6

SOCKET对象发送消息问题?

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-10 19:20:01 | 显示全部楼层 |阅读模式
//m_Socket和client分别是SOCKET和struct sockaddr_in的全局对象
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    WSADATA wsaD;
    WORD wVersionRequested = MAKEWORD(1,1);
    if(WSAStartup(wVersionRequested, &wsaD) !=0 ){
        MessageDlg("错误1!",mtInformation,TMsgDlgButtons()<<mbOK,0);
        return;
    }

    if((m_Socket = socket(AF_INET,SOCK_STREAM,0))  == INVALID_SOCKET ){
        MessageDlg("错误2!",mtInformation,TMsgDlgButtons()<<mbOK,0);
        return;
    }
    client.sin_family = AF_INET;
    client.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    client.sin_port = htons( 878787 );
    int len = sizeof(client);
    if(connect( m_Socket, (struct sockaddr*)&client, sizeof( client)) == SOCKET_ERROR ){
        MessageDlg("错误3!",mtInformation,TMsgDlgButtons()<<mbOK,0);
        return;
    }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    char buf[5] = {'1','2','3','4','5'};
    if( send( m_Socket, buf, 5, 0 ) == SOCKET_ERROR ){
        MessageDlg("错误4!",mtInformation,TMsgDlgButtons()<<mbOK,0);
        return;
    }        
}

问题是这样的,按Button1连接成功(没有出错,服务器端也能收到连接成功的信息)之后,再按Button2为什么还会出错?哪位大侠能告诉我少了哪个步骤?
回复

使用道具 举报

0

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-1-16 14:18:01 | 显示全部楼层
WSAGetLastError 看一下是什么错误。
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-18 02:18:01 | 显示全部楼层
返回10093?
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-18 10:54:01 | 显示全部楼层
void __fastcall TListenThread::Execute(){
    while(!Terminated){
         if(m_AcceptSocket = accept(AcppetSocket,(struct sockaddr*)&client,&nLen)!=INVALID_SOCKET){
             return;
         }
    }
}
?没人知道么
这是服务端的部分代码,用来测试的,m_AccptSocket和client是全局对象
回复

使用道具 举报

0

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-1-21 11:27:01 | 显示全部楼层
应用程序没有调用 WSAStartup,或者 WSAStartup 失败。
回复

使用道具 举报

0

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-1-21 12:27:02 | 显示全部楼层
楼主把 ws2_32.lib 这个文件加到工程里应该可以。
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-8-5 21:45:01 | 显示全部楼层
帮顶
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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