使用流式字套接字来发送和接收数据代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用流式字套接字来发送和接收数据代码
2009-12-30 15:11
服务器端:
#pragma comment(lib,"ws2_32.lib")
#include
#include
using namespace std;
int init();
int main()
{
init();
SOCKET s,s2;
s=socket(AF_INET,SOCK_STREAM,0);
if (s==0)
{
cout<<"socket error:"< return -1; } sockaddr_in addr,addrfrom; addr.sin_family=AF_INET; addr.sin_port=htons(2345); addr.sin_addr.S_un.S_addr=htons(0); if (bind(s,(LPSOCKADDR) &addr,sizeof(addr))==SOCKET_ERROR) { cout<<"bind error:"< return -1; } if(listen(s,2)==SOCKET_ERROR) { cout<<"listen error:"< return -1; } cout<<"waiting for connecting..."< int len=sizeof(addrfrom); if ((s2=accept(s,(LPSOCKADDR) &addrfrom,&len))==INVALID_SOCKET) { cout<<"accept error:"< return -1; } cout<<"already connected"< if(recv(s2,data,sizeof(data),0)==SOCKET_ERROR) { cout<<"recv error"< return -1; } cout<<"received data is:"< } int init()//成功则返回0 { WSADATA wsadata; int nRc=WSAStartup(0x0101,&wsadata); if (nRc) return -1; if (wsadata.wVersion!=0x0101) { WSACleanup(); return -1; } return 0; } 客户端: #pragma comment(lib,"ws2_32.lib") #define IP "127.0.0.1"//这里设置服务器ip地址。 #include #include #include using namespace std; int init(); int main() { init(); SOCKET s; s=socket(AF_INET,SOCK_STREAM,0); if (s==0) { cout<<"socket error:"< } sockaddr_in addr,addrto; addrto.sin_addr.S_un.S_addr=inet_addr(IP); addrto.sin_family=AF_INET; addrto.sin_port=htons(2345); addr.sin_family=AF_INET; addr.sin_port=htons(2346); addr.sin_addr.S_un.S_addr=htons(0); if (bind(s,(LPSOCKADDR) &addr,sizeof(addr))==SOCKET_ERROR) { cout<<"bind error:"< return -1; } cout<<"press any key to connecting"< _getch(); if (connect(s,(LPSOCKADDR)&addrto,sizeof(addrto))==SOCKET_ERROR) { cout<<"connect error:"< return -1; } char data[256]; cout<<"input message you want to send:"< gets(data); if(send(s,data,sizeof(data),0)==SOCKET_ERROR) { cout<<"send error:"< return -1; } cout<<"message sended"< } int init()//成功则返回0 { WSADATA wsadata; int nRc=WSAStartup(0x0101,&wsadata); if (nRc) return -1; if (wsadata.wVersion!=0x0101) { WSACleanup(); return -1; } return 0; }