Write 10 Sample c++ coding for windows network programming
- Establishing a TCP connection between a client and server:
#include
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server; char *message, server_reply[2000]; int recv_size;
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons( 8888 );
if (connect(s , (struct sockaddr *)&server , sizeof(server)) < 0){
cout<<"connect error"<<endl;
return 1;
}
cout<<"Connected"<<endl;
message = "Hello Server!";
if( send(s , message , strlen(message) , 0) < 0){
cout<<"Send failed"<<endl;
return 1;
}
cout<<"Data Sent"<<endl;
if((recv_size = recv(s , server_reply , 2000 , 0)) == SOCKET_ERROR){
cout<<"recv failed"<<endl;
}
cout<<"Reply received"<<endl;
server_reply[recv_size] = '\0';
cout<<server_reply<<endl;
closesocket(s);
WSACleanup();
return 0;
}
- Creating a server socket and listening for incoming connections:
#include
int main(){ WSADATA wsa; SOCKET s, new_socket; struct sockaddr_in server, client; char *message, client_reply[2000]; int c, recv_size;
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
listen(s , 3);
cout<<"Waiting for incoming connections..."<<endl;
c = sizeof(struct sockaddr_in);
new_socket = accept(s , (struct sockaddr *)&client, &c);
if (new_socket == INVALID_SOCKET){
cout<<"accept failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Connection accepted"<<endl;
if((recv_size = recv(new_socket , client_reply , 2000 , 0)) == SOCKET_ERROR){
cout<<"recv failed"<<endl;
}
cout<<"Reply received"<<endl;
client_reply[recv_size] = '\0';
cout<<client_reply<<endl;
message = "Hello Client!";
send(new_socket , message , strlen(message) , 0);
cout<<"Data Sent"<<endl;
closesocket(s);
WSACleanup();
return 0;
}
- Creating a UDP socket and sending data to a server:
#include
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server, si_other; char *message = "Hello Server!"; char server_reply[2000]; int recv_size, slen = sizeof(si_other);
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_DGRAM , IPPROTO_UDP)) == SOCKET_ERROR){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
si_other.sin_family = AF_INET;
si_other.sin_port = htons(8888);
si_other.sin_addr.s_addr = inet_addr("127.0.0.1");
if (sendto(s, message, strlen(message) , 0 , (struct sockaddr *) &si_other, slen) == SOCKET_ERROR){
cout<<"sendto() failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Data Sent"<<endl;
closesocket(s);
WSACleanup();
return 0;
}
- Receiving data on a server from a UDP client:
#include
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server, si_other; char *message = "Hello Client!"; char client_reply[2000]; int recv_size, slen = sizeof(si_other);
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_DGRAM , IPPROTO_UDP)) == SOCKET_ERROR){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
while(1){
cout<<"Waiting for data..."<<endl;
fflush(stdout);
if ((recv_size = recvfrom(s, client_reply, 2000, 0, (struct sockaddr *) &si_other, &slen)) == SOCKET_ERROR){
cout<<"recvfrom() failed with error code : "<<WSAGetLastError()<<endl;
}
cout<<"Data received from "<<inet_ntoa(si_other.sin_addr)<<":"<<ntohs(si_other.sin_port)<<endl;
client_reply[recv_size] = '\0';
cout<<client_reply<<endl;
if (sendto(s, message, strlen(message) , 0 , (struct sockaddr*) &si_other, slen) == SOCKET_ERROR){
cout<<"sendto() failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Data Sent"<<endl;
}
closesocket(s);
WSACleanup();
return 0;
}
- Creating a non-blocking socket:
#include
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server; char *message, server_reply[2000]; int recv_size; u_long iMode = 1;
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons( 8888 );
if (connect(s , (struct sockaddr *)&server , sizeof(server)) < 0){
cout<<"connect error"<<endl;
return 1;
}
cout<<"Connected"<<endl;
message = "Hello Server!";
if( send(s , message , strlen(message) , 0) < 0){
cout<<"Send failed"<<endl;
return 1;
}
cout<<"Data Sent"<<endl;
// Set the socket to non-blocking mode
iMode = 1;
ioctlsocket(s, FIONBIO, &iMode);
while (1){
recv_size = recv(s, server_reply, 2000, 0);
if (recv_size > 0){
server_reply[recv_size] = '\0';
cout<<server_reply<<endl;
break;
}
}
closesocket(s);
WSACleanup();
return 0;
}
- Creating a thread to handle incoming connections on a server:
#include
void handler(void *);
int main(){ WSADATA wsa; SOCKET s, new_socket; struct sockaddr_in server, client; char *message, client_reply[2000]; int c, recv_size;
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
listen(s , 3);
cout<<"Waiting for incoming connections..."<<endl;
c = sizeof(struct sockaddr_in);
while ((new_socket = accept(s , (struct sockaddr *)&client, &c))){
cout<<"Connection accepted"<<endl;
// create a new thread to handle the incoming connection
_beginthread(handler, 0, (void *) &new_socket);
}
if (new_socket == INVALID_SOCKET){
cout<<"accept failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
closesocket(s);
WSACleanup();
return 0;
}
void handler(void *socket_desc){ SOCKET sock = (SOCKET)socket_desc; char *message, client_reply[2000]; int recv_size;
message = "Hello Client!";
send(sock , message , strlen(message) , 0);
cout<<"Data Sent"<<endl;
if((recv_size = recv(sock , client_reply , 2000 , 0)) == SOCKET_ERROR){
cout<<"recv failed"<<endl;
}
cout<<"Reply received"<<endl;
client_reply[recv_size] = '\0';
cout<<client_reply<<endl;
closesocket(sock);
_endthread();
}
- Sending data to multiple clients on a server:
#include
int main(){ WSADATA wsa; SOCKET s, new_socket; struct sockaddr_in server, client; char *message = "Hello Client!"; int c;
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
listen(s , 3);
cout<<"Waiting for incoming connections..."<<endl;
c = sizeof(struct sockaddr_in);
while ((new_socket = accept(s , (struct sockaddr *)&client, &c))){
cout<<"Connection accepted"<<endl;
// send data to the client
send(new_socket , message , strlen(message) , 0);
}
if (new_socket == INVALID_SOCKET){
cout<<"accept failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
closesocket(s);
WSACleanup();
return 0;
}
- Creating a UDP multicast socket:
#include
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server, multicast; char *message = "Hello Multicast!"; char server_reply[2000]; int recv_size, slen = sizeof(multicast);
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_DGRAM , IPPROTO_UDP)) == SOCKET_ERROR){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
multicast.sin_family = AF_INET;
multicast.sin_addr.s_addr = inet_addr("239.255.255.250");
multicast.sin_port = htons( 1900 );
if (setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, (char *)&s, sizeof(s)) < 0){
cout<<"setsockopt() failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
if (sendto(s, message, strlen(message) , 0 , (struct sockaddr *) &multicast, slen) == SOCKET_ERROR){
cout<<"sendto() failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Data Sent"<<endl;
closesocket(s);
WSACleanup();
return 0;
}
- Receiving data on a UDP multicast socket:
#include
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server, multicast; char *message = "Hello Multicast!"; char server_reply[2000]; int recv_size, slen = sizeof(multicast);
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0){
cout<<"Failed. Error Code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Initialised."<<endl;
if((s = socket(AF_INET , SOCK_DGRAM , IPPROTO_UDP)) == SOCKET_ERROR){
cout<<"Could not create socket : "<<WSAGetLastError()<<endl;
}
cout<<"Socket created."<<endl;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 8888 );
if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR){
cout<<"Bind failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
cout<<"Bind done"<<endl;
multicast.sin_family = AF_INET;
multicast.sin_addr.s_addr = inet_addr("239.255.255.250");
multicast.sin_port = htons( 1900 );
if (setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&multicast, sizeof(multicast)) < 0){
cout<<"setsockopt() failed with error code : "<<WSAGetLastError()<<endl;
return 1;
}
while (1){
cout<<"Waiting for data..."<<endl;
fflush(stdout);
if ((recv_size = recvfrom(s, server_reply, 2000, 0, (struct sockaddr *) &multicast, &slen)) == SOCKET_ERROR){
cout<<"recvfrom() failed with error code : "<<WSAGetLastError()<<endl;
}
cout<<"Data received from "<<inet_ntoa(multicast.sin_addr)<<":"<<ntohs(multicast.sin_port)<<endl;
server_reply[recv_size] = '\0';
cout<<server_reply<<endl;
}
closesocket(s);
WSACleanup();
return 0;
}
- Sending and receiving data on a TCP connection using asynchronous I/O:
#include
#define MAX_BUFFER_SIZE 1024
int main(){ WSADATA wsa; SOCKET s; struct sockaddr_in server; WSAEVENT hEvent; WSABUF wsaBuf; char buffer[MAX_BUFFER_SIZE], server_reply[MAX_BUFFER_SIZE]; DWORD dwBytes, dwFlags = 0; int recv_size;
cout<<"Initialising Winsock..."<<endl;
if (WSAStartup(MAKEWORD(2,2),&wsa) !=
原文地址: http://www.cveoy.top/t/topic/rDG 著作权归作者所有。请勿转载和采集!