弱智抓蛙男 发表于 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),&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*)&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*)&Cli,&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),&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*)&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]