Показать сообщение отдельно

  #2  
Старый 13.07.2009, 11:38
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

http://forum.sources.ru/index.php?showtopic=166220

посмотри


и вот еще в исходниках валялось
Код:
#include <stdio.h>
#include <winsock.h>
 
// Function prototype
void StreamClient(char *szServer, short nPort, char *szMessage);
// Helper macro for displaying errors
#define PRINTERROR(s)	\
		fprintf(stderr,"\n%: %d\n", s, WSAGetLastError())
 
 
 
////////////////////////////////////////////////////////////
 
void main(int argc, char **argv)
{
	WORD wVersionRequested = MAKEWORD(2,0);
	WSADATA wsaData;
	int nRet;
	short nPort;
 
	//
	// Check for the host and port arguments
	//
	if (argc != 4)
	{
		fprintf(stderr,"\nSyntax: client ServerName PortNumber Message\n");
		return;
	}
 
	nPort = atoi(argv[2]);
 
 
	//
	// Initialize WinSock and check the version
	//
	nRet = WSAStartup(wVersionRequested, &wsaData);
 
	//
	// Go do the stuff a stream client does
	//
	StreamClient(argv[1], nPort, argv[3]);
 
 
	//
	// Release WinSock
	//
	WSACleanup();
}
 
////////////////////////////////////////////////////////////
 
void StreamClient(char *szServer, short nPort, char *szMessage)
{
	printf("\nStream Client connecting to server: %s on port: %d",
				szServer, nPort);
 
	//
	// Find the server
	//
    LPHOSTENT lpHostEntry;
 
	lpHostEntry = gethostbyname(szServer);
    if (lpHostEntry == NULL)
    {
        PRINTERROR("gethostbyname()");
        return;
    }
 
	//
	// Create a TCP/IP stream socket
	//
	SOCKET	theSocket;
 
	theSocket = socket(AF_INET,				// Address family
					   SOCK_STREAM,			// Socket type
					   IPPROTO_TCP);		// Protocol
	if (theSocket == INVALID_SOCKET)
	{
		PRINTERROR("socket()");
		return;
	}
 
	//
	// Fill in the address structure
	//
	SOCKADDR_IN saServer;
 
	saServer.sin_family = AF_INET;
	saServer.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
										// ^ Server's address
	saServer.sin_port = htons(nPort);	// Port number from command line
 
	//
	// connect to the server
	//
	int nRet;
 
	nRet = connect(theSocket,				// Socket
				   (LPSOCKADDR)&saServer,	// Server address
				   sizeof(struct sockaddr));// Length of server address structure
	if (nRet == SOCKET_ERROR)
	{
		PRINTERROR("socket()");
		closesocket(theSocket);
		return;
	}
 
 
	//
	// Send data to the server
	//
    
    char szBuf[256];
 
	// strcpy(szBuf, "From the Client");
	nRet = send(theSocket,				// Connected socket
				szMessage,					// Data buffer
				strlen(szMessage),			// Length of data
				0);						// Flags
	if (nRet == SOCKET_ERROR)
	{
		PRINTERROR("send()");
		closesocket(theSocket);
		return;
	}
 
 
	//
	// Wait for a reply
	//
	nRet = recv(theSocket,				// Connected socket
				szBuf,					// Receive buffer
				sizeof(szBuf)+1,			// Size of receive buffer
				0);						// Flags
	if (nRet == SOCKET_ERROR)
	{
		PRINTERROR("recv()");
		closesocket(theSocket);
		return;
	}
 
 
	//
	// Display the received data
	//
	printf("\nData received: %s", szBuf);
 
 
	closesocket(theSocket);
	return;
}