|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Практична частина. // client.cpp: определяет точку входа для консольного приложения// client.cpp: определяет точку входа для консольного приложения. //
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include "winsock2.h"
#pragma comment(lib,"Ws2_32.lib"); // библиотека void main() { //---------------------- // Initialize Winsock WSADATA wsaData; //инициализция библиотеки int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult!= NO_ERROR) printf("Error at WSAStartup()\n");
//---------------------- // Create a SOCKET for connecting to server SOCKET ConnectSocket; // ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); ConnectSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (ConnectSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); WSACleanup(); getch(); return; }
//---------------------- // The sockaddr_in structure specifies the address family, // IP address, and port of the server to be connected to. sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr("127.0.0.1"); clientService.sin_port = htons(514);
//---------------------- // Connect to server. if (connect(ConnectSocket, (SOCKADDR*) &clientService, sizeof(clientService)) == SOCKET_ERROR) { printf("Failed to connect.\n"); WSACleanup(); getch(); return; }
printf("Connected to server.\n");
do { char sendbuf[512];// = "this is a test"; printf("Enter data>"); scanf("%s",sendbuf); iResult = send(ConnectSocket, sendbuf, (int)strlen(sendbuf), 0); if (iResult == SOCKET_ERROR) { printf("send failed: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return; } printf("Bytes Sent: %ld\n", iResult); }while(iResult); getch(); WSACleanup(); return;
// server.cpp: определяет точку входа для консольного приложения. //
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include "winsock2.h" #pragma comment(lib,"Ws2_32.lib");
#define DEFAULT_BUFLEN 512 char recvbuf[DEFAULT_BUFLEN];
void main() {
//---------------------- // Initialize Winsock WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult!= NO_ERROR) printf("Error at WSAStartup()\n");
printf("Initialize Winsock OK\n"); //---------------------- // Create a SOCKET for listening for // incoming connection requests. SOCKET ListenSocket; // ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); ListenSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (ListenSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); getch(); WSACleanup(); return; }
//---------------------- // The sockaddr_in structure specifies the address family, // IP address, and port for the socket that is being bound. sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("127.0.0.1"); service.sin_port = htons(514);
printf("Server Started\n"); if (bind(ListenSocket, (SOCKADDR*) &service, sizeof(service)) == SOCKET_ERROR) { printf("bind() failed.\n"); closesocket(ListenSocket); getch(); return; }
printf("Bind OK\n"); do{ iResult = recv(/*AcceptSocket*/ListenSocket, recvbuf, DEFAULT_BUFLEN, 0); if (iResult > 0) { recvbuf[iResult]=0; printf("Bytes received: %d\nData: %s\n", iResult,recvbuf); } }while (iResult > 0);
WSACleanup(); getch(); return; }
Результати: До початку опрерації обміну Клієнт: Connected to server. Enter data>
Сервер: Initialize Winsock OK Server Started Bind OK
Після операції обміну Клієнт: Initialize Winsock OK Server Started Bind OK Bytes received: 11 Data: 132/.,masdf Time: 15 ms
Сервер: Initialize Winsock OK Server Started Bind OK Bytes received: 11 Data: 132/.,masdf
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |