弱智抓蛙男 发表于 2007-1-6 13:18

求一个CSocket客户端和服务器端的代码片段

<P>有基本的消息发送和消息接受函数就行了<BR>起步阶段,望施与援手~</P>

niewucai 发表于 2007-1-10 15:14

我自己简单的写的,是从我的一个用MFC做的程序里面剪出来的,不了解的地方可以来问我,其实我也是刚开始编网络程序<br>我的QQ:531119186<br>(1)服务端<br>SOCKET Server;<br>struct sockaddr_in Cli;<br>char buf[50]="你好,我是服务端!";<br>    char Revdata[50];    <br>    CString Status;<br>    while(1)<br>    {<br>    if(WSAStartup(MAKEWORD(2,2),&amp;wsaData)!=0)<br>    {<br>        MessageBox("socket 创建失败!","",MB_OK|MB_ICONERROR);<br>    }<br>    else {        <br>        Status.Format("socket创建成功!\r\n");<br>        //SetDlgItemText(IDC_EDIT1,Status);<br>        m_status.ReplaceSel(Status);<br>        UpdateData(FALSE);<br>    }<br>    Server=socket(AF_INET,SOCK_STREAM,0);<br>    Cli.sin_family=AF_INET;<br>    Cli.sin_port=htons(DEFAULT_PORT);<br>    Cli.sin_addr.s_addr=htonl(INADDR_ANY);<br>    //Cli.sin_addr.s_addr=inet_addr("192.18.109.6");<br>    if(bind(Server,(struct sockaddr*)&amp;Cli,sizeof(Cli))==SOCKET_ERROR)<br>    {<br>        MessageBox("绑定本地地址失败!","反馈信息",MB_OK|MB_ICONERROR);<br>        return ;<br>    }<br>    else {        <br>        Status="成功绑定本地地址!\r\n";<br>        //SetDlgItemText(IDC_EDIT1,Status);<br>        m_status.ReplaceSel(Status);<br>        UpdateData(TRUE);<br>    }<br>        sListen=listen(Server,5);<br>    if(sListen==SOCKET_ERROR)<br>    {<br>        MessageBox("侦听失败!","",MB_OK|MB_ICONINFORMATION);<br>        return ;<br>    }<br>    else {        <br>        <br>        Status="服务端已经处于监听状态...\r\n";<br>        //SetDlgItemText(IDC_EDIT1,Status);<br>        m_status.ReplaceSel(Status);<br>        //Sleep(100);<br>        UpdateData(TRUE);<br>    }<br>    int sCli=sizeof(Cli);<br>    SOCKET sAccept=accept(Server,(struct sockaddr*)&amp;Cli,&amp;sCli);<br>    if(sAccept==INVALID_SOCKET)<br>    {<br>        Status="服务端接收失败!\r\n";<br>        //SetDlgItemText(IDC_EDIT1,Status);<br>        m_status.ReplaceSel(Status);<br>        UpdateData(TRUE);<br>    }<br>    else <br>    {<br>        Status="连接客户端成功!\r\n";<br>        CString IP;<br>        IP.Format("有客户机已连接,对方IP:%s",inet_ntoa(Cli.sin_addr));<br>        MessageBox(IP,"反馈消息",MB_OK|MB_ICONINFORMATION);        <br>        //SetDlgItemText(IDC_EDIT1,Status);<br>        if(send(sAccept,buf,sizeof(buf),0)==SOCKET_ERROR)<br>        {<br>            Status="服务端发送数据失败!\r\n";<br>            //SetDlgItemText(IDC_EDIT1,Status);<br>            m_status.ReplaceSel(Status);<br>            UpdateData(TRUE);<br>        }<br>        else <br>        {            <br>            Status="服务端成功发送数据!\r\n";<br>            //SetDlgItemText(IDC_EDIT1,Status);    <br>            m_status.ReplaceSel(Status);<br>            UpdateData(TRUE);<br>        }<br>        closesocket(sAccept);<br>    }    <br>    closesocket(sListen);<br>    WSACleanup();<br>    }<br>(1)客户端<br>SOCKET Client;<br>struct sockaddr_in Sev;<br>char buf[50];<br>    memset(buf,'\0',sizeof(buf));    <br>    if(WSAStartup(MAKEWORD(2,2),&amp;wsaData)!=0)<br>    {<br>        MessageBox("socket创建失败!","反馈信息",MB_OK|MB_ICONINFORMATION);<br>    }<br>    Client=socket(AF_INET,SOCK_STREAM,0);<br>    Sev.sin_family=AF_INET;<br>    Sev.sin_port=htons(DEFAULT_PORT);<br>    Sev.sin_addr.s_addr=inet_addr("192.168.109.6");    <br>    //Sev.sin_addr.s_addr=htonl(INADDR_ANY);<br>    int sConnect;<br>    sConnect=connect(Client,(struct sockaddr*)&amp;Sev,sizeof(Sev));<br>    if(sConnect==SOCKET_ERROR)<br>    {<br>        MessageBox("连接服务端失败!","反馈信息",MB_OK|MB_ICONINFORMATION);<br>        return ;<br>    }<br>    else<br>    {<br>        MessageBox("连接服务端成功!","反馈信息",MB_OK|MB_ICONINFORMATION);<br>    }<br>    if(recv(Client,buf,sizeof(buf),0)==SOCKET_ERROR)<br>    {<br>        MessageBox("接收失败!","反馈信息",MB_OK|MB_ICONINFORMATION);    <br>        return ;<br>    }<br>    else<br>    {MessageBox("接收成功!","反馈信息",MB_OK|MB_ICONINFORMATION);<br>        SetDlgItemText(IDC_EDIT1,buf);<br>    }<br>    closesocket(Client);<br>    WSACleanup();
[align=right][color=#000066][此贴子已经被作者于2007-1-10 15:14:31编辑过][/color][/align]

弱智抓蛙男 发表于 2007-1-13 15:02

迟了点,<BR>不过还是niewucai够义气<BR>全贴出来了<BR>十分感谢<BR>看来vc.net人气不是很好

页: [1]

编程论坛