Chào mn, mình đang định làm thử một chương trình giao tiếp dạng chat sử dụng client-sever TCP bằng winsock. Mình chạy trên cùng một máy tính.
Vấn đề là sau khi mình chạy server đến đoạn listening, mình chạy client thì nó bị lỗi ở phần connect (xuống phần perror rồi thoát chương trinh)
Sever:
Code:
#include <stdio.h>
#include <tchar.h>
#include <winsock2.h>
#include <iostream>

#define MY_PORT 8888

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	//Khoi tao Winsock
	WSADATA SData;
	
	if (WSAStartup(0x0202, &SData) != 0)
	{
		cout << "KHONG THE KHOI DONG WINSOCK";
		return 1;
	}

	//khoi tao Socket
	int listeningSocket;
	if ((listeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
	{
		perror("socket failed");
		exit(EXIT_FAILURE);
	}

	//Thiet lap IP va PORT
	sockaddr_in server_addr;

	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(MY_PORT);
	server_addr.sin_addr.s_addr = INADDR_ANY;

	//Dua IP va PORT vao SOCKET
	if (bind(listeningSocket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
	{
		perror("bind failed");
		exit(EXIT_FAILURE);
	}

	//Lang nghe
	if (listen(listeningSocket, 5) < 0)
	{
		perror("listen failed");
		exit(EXIT_FAILURE);
	}

	//accept, chap nhan ket noi
	int new_socket;
	sockaddr_in client_addr;

	int nSizeAddr = sizeof(sockaddr);
	if (new_socket = accept(listeningSocket, (struct sockaddr *)&client_addr, &nSizeAddr) < 0)
	{
		perror("accept failed");
		exit(EXIT_FAILURE);
	}

	while (1)
	{
		//recv
		char buff[100];
		if (recv(new_socket, buff, 100, 0) < 0)
		{
			perror("recv failed");
			exit(EXIT_FAILURE);
		}
		cout << buff << endl;

		//send
		string sndStr = "Da nhan";
		if (send(new_socket, sndStr.c_str(), sndStr.size(), 0) < 0)
		{
			perror("send failed");
			exit(EXIT_FAILURE);
		}

	}
	//close socket
	closesocket(new_socket);

	//huy socket
	WSACleanup();

	return 0;
}
Client:
Code:
#include <stdio.h>
#include <tchar.h>
#include <winsock2.h>
#include <iostream>
#include <string>

#define MY_PORT 8888

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	//Khoi tao winsock
	WSADATA SData;
	
	if (WSAStartup(0x0202, &SData) != 0) 
	{
		cout << "KHONG THE KHOI DONG WINSOCK";
		return 1;
	}
	//Khoi tao socket
	int clientSocket;
	if (clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) < 0)
	{
		perror("socket failed");
		exit(EXIT_FAILURE);
	}

	//Thiet lap IP va PORT
	sockaddr_in server_addr;

	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(MY_PORT);
	server_addr.sin_addr.s_addr = INADDR_ANY; //Vi Client-Server chung 1 may

	//Connect
	if (connect(clientSocket, (SOCKADDR*)&server_addr, sizeof(server_addr)) < 0)
	{
		perror("connect failed");
		exit(EXIT_FAILURE);
	}

	while (1)
	{
		//Send 
		string sndStr;
		getline(cin, sndStr);
		if (send(clientSocket, sndStr.c_str(), sndStr.size(), 0) < 0)
		{
			perror("send failed");
			exit(EXIT_FAILURE);
		}
		//Recv
		char buff[100];
		if (recv(clientSocket, buff, 100, 0) < 0)
		{
			perror("recv failed");
			exit(EXIT_FAILURE);
		}
		cout << buff << endl;
	}
	//Close socket
	closesocket(clientSocket);

	//Huy Socket
	WSACleanup();
}
Mong moị người giúp đỡ