Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TCP client
- #define _WINSOCK_DEPRECATED_NO_WARNINGS
- #include <iostream>
- #include <string>
- using namespace std;
- #include <WinSock2.h>
- #include <WS2tcpip.h>
- #pragma comment (lib,"ws2_32.lib")
- unsigned short constexpr PORT = 49153;
- int main() {
- cout << "TCPServer\n";
- // initialize WSA
- WSAData wsaData;
- int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
- if (iResult != 0) {
- cerr << "WSAStartup failed: " << iResult << endl;
- return EXIT_FAILURE;
- }
- // Create the UDP socket
- SOCKET hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- // Create the server address
- sockaddr_in serverAddress = { 0 };
- serverAddress.sin_family = AF_INET;
- serverAddress.sin_port = htons(PORT);
- serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1");
- //bind the socket
- if (bind(hSocket, (SOCKADDR*)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) {
- cerr << "bind() failed\n";
- goto close;
- }
- cout << "TCP/IP socket bound\n";
- //listen...
- if (listen(hSocket, 1) == SOCKET_ERROR) {
- cerr << "listen() failed\n";
- goto close;
- }
- {
- cout << "Waiting for connection\n";
- SOCKET hAccepted = SOCKET_ERROR;
- while (hAccepted == SOCKET_ERROR) {
- hAccepted = accept(hSocket, NULL, NULL);
- }
- cout << "Client connected\n";
- char sendbuf[32] = "Goodbye";
- char recvbuf[32] = "";
- int bytesRecv = recv(hAccepted, recvbuf, 32, 0);
- cout << "Recv = " << bytesRecv << ": " << recvbuf << endl;
- int bytesSent = send(hAccepted, sendbuf, strlen(sendbuf) + 1, 0);
- cout << "Sent = " << bytesSent << " bytes" << endl;
- int i;
- bytesRecv = recv(hAccepted, reinterpret_cast<char*>(&i), sizeof(i), 0);
- cout << "i = " << i << endl;
- cout << "Close the accepted socket\n";
- closesocket(hAccepted);
- }
- // cleanup
- close:
- closesocket(hSocket);
- WSACleanup();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement