#include using" />
当前位置:文档之家› 使用流式字套接字来发送和接收数据代码

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

使用流式字套接字来发送和接收数据代码
2009-12-30 15:11
服务器端:
#pragma comment(lib,"ws2_32.lib")
#include<winsock.h>
#include<iostream>
using namespace std;
int init();
int main()
{
init();
SOCKET s,s2;
s=socket(AF_INET,SOCK_STREAM,0);
if (s==0)
{
cout<<"socket error:"<<WSAGetLastError()<<endl;
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:"<<WSAGetLastError()<<endl;
return -1;
}
if(listen(s,2)==SOCKET_ERROR)
{
cout<<"listen error:"<<WSAGetLastError()<<endl;
return -1;
}
cout<<"waiting for connecting..."<<endl;
int len=sizeof(addrfrom);
if ((s2=accept(s,(LPSOCKADDR) &addrfrom,&len))==INVALID_SOCKET)
{
cout<<"accept error:"<<WSAGetLastError()<<endl;
return -1;
}
cout<<"already connected"<<endl<<"waiting for receiving data..."<<endl; char data[256];
if(recv(s2,data,sizeof(data),0)==SOCKET_ERROR) {
cout<<"recv error"<<WSAGetLastError()<<endl;
return -1;
}
cout<<"received data is:"<<data<<endl;
}
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<winsock.h>
#include<iostream>
#include<conio.h>
using namespace std;
int init();
int main()
{
init();
SOCKET s;
s=socket(AF_INET,SOCK_STREAM,0);
if (s==0)
{
cout<<"socket error:"<<WSAGetLastError()<<endl; return -1;
}
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:"<<WSAGetLastError()<<endl;
return -1;
}
cout<<"press any key to connecting"<<endl;
_getch();
if (connect(s,(LPSOCKADDR)&addrto,sizeof(addrto))==SOCKET_ERROR) {
cout<<"connect error:"<<WSAGetLastError()<<endl;
return -1;
}
char data[256];
cout<<"input message you want to send:"<<endl;
gets(data);
if(send(s,data,sizeof(data),0)==SOCKET_ERROR)
{
cout<<"send error:"<<WSAGetLastError()<<endl;
return -1;
}
cout<<"message sended"<<endl;
}
int init()//成功则返回0
{
WSADATA wsadata;
int nRc=WSAStartup(0x0101,&wsadata);
if (nRc) return -1;
if (wsadata.wVersion!=0x0101)
{
WSACleanup();
return -1;
}
return 0;
}。

相关主题