本帖最后由 **kfu 于 2013-9-1 16:15 编辑
21小跑堂 发表于 2013-8-26 15:15 
已经OK~ 请大家核查!@flyriz - #include <stdio.h>
- #include "winsock2.h"
- 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.
- SOCKET m_socket;
- m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
- if ( m_socket == INVALID_SOCKET ) {
- printf( "Error at socket(): %ld\n", WSAGetLastError() );
- WSACleanup();
- return;
- }
- // Connect to a server.
- sockaddr_in clientService;
- clientService.sin_family = AF_INET;
- clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
- clientService.sin_port = htons( 27015 );
- if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
- printf( "Failed to connect.\n" );
- WSACleanup();
- return;
- }
- // Send and receive data.
- int bytesSent;
- int bytesRecv = SOCKET_ERROR;
- char sendbuf[32] = "Client: Sending data.";
- char recvbuf[32] = "";
- bytesSent = send( m_socket, sendbuf, strlen(sendbuf), 0 );
- printf( "Bytes Sent: %ld\n", bytesSent );
- while( bytesRecv == SOCKET_ERROR ) {
- bytesRecv = recv( m_socket, recvbuf, 32, 0 );
- if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
- printf( "Connection Closed.\n");
- break;
- }
- if (bytesRecv < 0)
- return;
- printf( "Bytes Recv: %ld\n", bytesRecv );
- }
- return;
- }
以上代码经过测试,发现会有些小问题存在,第一行代码丢失词语。
第50行代码发现不能出现<小于号,只要出现会被自动转义。
|