Code:
/*
Application: Chat Client v1.0
By: Brian Denys
Email: [email protected]
*/
/* Include Files */
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32")
#define BACKLOG 5
int __cdecl Send_to_Client(const char *ip, unsigned short Port, char *Message)
{
/* Declare and Initialize variables */
int iResult;
WSADATA wsaData;
SOCKET ConnectSocket;
struct sockaddr_in clientConnect;
/* Initialize Winsock */
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if(iResult != NO_ERROR)
{
printf("WSAStartup() failed.\n");
return 1;
}
/* Create socket to connect to server */
ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(ConnectSocket == INVALID_SOCKET)
{
printf("Failed to create ConnectSocket.\n");
WSACleanup();
return 1;
}
/* IP Address of client to send to */
clientConnect.sin_family = AF_INET;
clientConnect.sin_addr.s_addr = inet_addr( ip );
clientConnect.sin_port = htons ( Port );
/* Connect to client */
iResult = connect(ConnectSocket, (SOCKADDR*)&clientConnect, sizeof(clientConnect));
if(iResult == SOCKET_ERROR)
{
printf("Failed to connect to client.\n");
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
/* Send buffer */
iResult = send(ConnectSocket, Message, (int)strlen(Message), 0);
if(iResult == SOCKET_ERROR)
{
printf("Failed to send buffer.\n");
closesocket(ConnectSocket);
WSACleanup();
return 1;
}else{
printf("Bytes send: %d.", iResult);
}
/* Shutdown the connection */
iResult = shutdown(ConnectSocket, SD_SEND);
if(iResult == SOCKET_ERROR)
{
printf("Shutdown connection failed.\n");
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
/* Cleanup */
closesocket(ConnectSocket);
WSACleanup();
}
int __cdecl Receive_from_Client(const char *ip, unsigned short Port)
{
/* Declare and initialize variables */
int iResult;
WSADATA wsaData;
SOCKET ConnectSocket;
struct sockaddr_in clientRecv;
int recvbuflen = 512;
char recvbuf[512];
/* Initialize Winsock */
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("WSAStartup() failed.\n");
return 1;
}
/* Create a socket to connect to client */
ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ConnectSocket == INVALID_SOCKET) {
printf("socket() failed.\n");
WSACleanup();
return 1;
}
/* IP Address and Port of the Client to connect to */
clientRecv.sin_family = AF_INET;
clientRecv.sin_addr.s_addr = inet_addr( ip );
clientRecv.sin_port = htons( Port );
/* Connect to client */
iResult = connect( ConnectSocket, (SOCKADDR*) &clientRecv, sizeof(clientRecv) );
if ( iResult == SOCKET_ERROR) {
closesocket (ConnectSocket);
printf("Connect to client failed.\n");
WSACleanup();
return 1;
}
/* Receive from Client */
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
printf("Received: %d\n", iResult);
/* Shutdown the connection */
iResult = shutdown(ConnectSocket, SD_SEND);
if(iResult == SOCKET_ERROR)
{
printf("Shutdown connection failed.\n");
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
/* Cleanup */
closesocket(ConnectSocket);
WSACleanup();
}
int Listen_for_Client(unsigned short Port)
{
/* Declare and initialize variables */
int iResult;
WSADATA wsaData;
SOCKET ConnectSocket;
struct sockaddr_in clientListen;
/* Initialize Winsock */
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("WSAStartup() failed.\n");
return 1;
}
/* Create a socket to connect to client */
ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ConnectSocket == INVALID_SOCKET) {
printf("socket() failed.\n");
WSACleanup();
return 1;
}
/* IP Address and Port of the Client to connect to */
clientListen.sin_family = AF_INET;
clientListen.sin_addr.s_addr = htonl(INADDR_ANY);
clientListen.sin_port = htons( Port );
/* Bind */
iResult = bind(ConnectSocket, (SOCKADDR*)&clientListen, sizeof(clientListen));
if(iResult == SOCKET_ERROR)
{
printf("bind() failed.\n");
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
/* Listen */
iResult = listen(ConnectSocket, BACKLOG);
if(iResult == SOCKET_ERROR)
{
printf("listen() failed.\n");
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
printf("Listening on socket ..\n");
/* Cleanup */
WSACleanup();
}
void Create1()
{
Send_to_Client("127.0.0.1", 1111, "Test.");
}
void Create2()
{
Receive_from_Client("127.0.0.1", 1111);
}
void Create3()
{
Listen_for_Client(1111);
}
int __cdecl main()
{
CreateThread(NULL, 0, (unsigned long(__stdcall*)(void*))Create3, NULL, 0, NULL);
CreateThread(NULL, 0, (unsigned long(__stdcall*)(void*))Create2, NULL, 0, NULL);
CreateThread(NULL, 0, (unsigned long(__stdcall*)(void*))Create1, NULL, 0, NULL);
system("pause");
return 0;
}
I don't receive the msg i just send, why?