Программирование сокетов windows
Primary tabs
Forums:
хорошая статья:
http://citforum.ru/book/cook/winsock.shtml
сервак=
// server.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #pragma comment( lib, "ws2_32.lib" ) #include <Windows.h> #include <conio.h> #define len 20 using namespace std; int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; WSAStartup(MAKEWORD(2,0),&wsaData); SOCKET s[20]; s[1] = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(2301); addr.sin_addr.s_addr= htonl(INADDR_ANY); bind(s[1], (SOCKADDR*)&addr, sizeof(addr)); //if(listen(s[1], 1)) return 0; listen(s[1], 10); int isize= sizeof(addr); SOCKET n[1]; int m = 1; n[1] = accept(s[1], (struct sockaddr*)&addr, &isize); char buf[20]; int i = 1; while(1) // "бесконечный" цикл { //m++; //s[6] = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // bind(s[6], (SOCKADDR*)&addr, sizeof(addr)); // listen(s[6], 1); // accept(s[6], (struct sockaddr*)&addr, &isize); //if ((n[m] = accept(s, (struct sockaddr*)&addr, &isize)) == -1) //{ // m--; //} //SOCKET n = accept(s, (struct sockaddr*)&addr, &isize); for (int i=1; i<2; i++) { recv(n[i], buf, len, 0); if(buf[0] != '9'){ // recv(n, buf, len, 0) != -1 cout << buf << std::endl; buf[0] = '9'; // блокировка повторного вывода } } getchar(); m++; n[m] = accept(s[1], (struct sockaddr*)&addr, &isize); } shutdown(s[1],0); closesocket(s[1]); WSACleanup(); _getch(); }
клиент:
// client.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <string> #include <iostream> #pragma comment( lib, "ws2_32.lib" ) #include <Windows.h> #include <conio.h> #define len 20 int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; WSAStartup(MAKEWORD(2,0),&wsaData); SOCKET s; s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(2301); addr.sin_addr.s_addr= inet_addr("127.0.0.1"); connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)); char buf[len]; while(int i = 1) { //connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)); printf("put any symbol to send a message to the server \n"); getchar(); strcpy(buf,"My message \n"); send(s, buf,20,0); } shutdown(s,0); closesocket(s); WSACleanup(); _getch(); }
- Log in to post comments
- 2834 reads