您的位置:首页 > 理论基础 > 计算机网络

C++网络

2016-05-10 19:31 639 查看
#include <windows.h>
#include <iostream>
using namespace std;
SOCKET StartServer(){
SOCKET serverSocket;
if(INVALID_SOCKET == (serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))){
cout << "create socket error" << endl;
Sleep(3000);
exit(-1);
}
short port = 9999;
struct sockaddr_in serverAddress;
memset(&serverAddress,0,sizeof(sockaddr_in));
serverAddress.sin_family=AF_INET;
serverAddress.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
serverAddress.sin_port = htons(port);
if(SOCKET_ERROR == bind(serverSocket,(sockaddr*)&serverAddress,sizeof(serverAddress))){
cout<<"bind error at :"<<port << endl;
Sleep(3000);
exit(-1);
}
if(SOCKET_ERROR == listen(serverSocket,SOMAXCONN)){
cout<<"listen error..." << endl;
Sleep(3000);
exit(-1);
}
cout<< "Server is listening at " << port << "......" << endl;
return serverSocket;
}
SOCKET ReceiveConnect(SOCKET &serverSocket){
SOCKET clientSocket;
struct sockaddr_in clientAddress;
memset(&clientAddress,0,sizeof(clientAddress));
int addrlen = sizeof(clientAddress);
if(INVALID_SOCKET == (clientSocket = accept(serverSocket,(sockaddr*)&clientAddress,&addrlen))){
cout<<"receive client error..." << endl;
Sleep(3000);
exit(-1);
}
cout << "Accept connection from " << inet_ntoa(clientAddress.sin_addr)<<endl;
return clientSocket;
}
void SendMsg(SOCKET &clientSocket,string data){
cout<<"server send msg:" << data;
if(send(clientSocket,data.data(),data.length(),0)==SOCKET_ERROR){
cout<<"send error..."<<endl;
Sleep(3000);
exit(-1);
}
}
int main(){
cout << "start..." << endl;
WSADATA wsa;
if(0 != WSAStartup(MAKEWORD(2,2),&wsa)){
cout<<"socket init error";
Sleep(3000);
exit(-1);
}
SOCKET serverSocket = StartServer();
SOCKET clientSocket = ReceiveConnect(serverSocket);
for(;;){
SendMsg(clientSocket,"hello world!!\r\n");
Sleep(1000);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ socket