使用流式字套接字来发送和接收数据代码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档