高分求一个基于winsock的发送文本信息的程序!
一端client,一端server,连接好之后,可以发送文本信息。求这样一段代码。
不胜感激!!!!

解决方案 »

  1.   

    服务:
    CFile f;
    f.Open("1.txt",..);
    int filesize = f.GetLength();
    while(filesize > 0)
    {
         f.read(buf,1024);
         ret = send(s,buf,sizeof(buf),0);
         filesize -= ret;
    }
    客户:
    CFile f;
    f.Open("1.txt",..);
    int ret=filesize;
    while(filesize > 0)
    {
         bytes = recv(s,buf,sizeof(buf),0);
         f.write(buf,bytes);
         filesize -= bytes;
    }
      

  2.   

    网上这种例程多拉,去http://www.vckbase.com看看吧。
      

  3.   

    客户端:
    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 for connecting to server
      SOCKET ConnectSocket;
      ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
      if (ConnectSocket == INVALID_SOCKET) {
        printf("Error at socket(): %ld\n", WSAGetLastError());
        WSACleanup();
        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( 27015 );  //----------------------
      // Connect to server.
      if ( connect( ConnectSocket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
        printf( "Failed to connect.\n" );
        WSACleanup();
        return;
      }  //----------------------
      // Declare and initialize variables.
      int bytesSent;
      int bytesRecv = SOCKET_ERROR;
      char sendbuf[32] = "Client: Sending data.";
      char recvbuf[32] = "";  //----------------------
      // Send and receive data.
      bytesSent = send( ConnectSocket, sendbuf, strlen(sendbuf), 0 );
      printf( "Bytes Sent: %ld\n", bytesSent );  while( bytesRecv == SOCKET_ERROR ) {
        bytesRecv = recv( ConnectSocket, recvbuf, 32, 0 );
        if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
          printf( "Connection Closed.\n");
          break;
        }
        printf( "Bytes Recv: %ld\n", bytesRecv );
      }  WSACleanup();
      return;
    }
      

  4.   

    服务器端:
    #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 for listening for
      // incoming connection requests.
      SOCKET ListenSocket;
      ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
      if (ListenSocket == INVALID_SOCKET) {
        printf("Error at socket(): %ld\n", WSAGetLastError());
        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(27015);  if (bind( ListenSocket, 
        (SOCKADDR*) &service, 
        sizeof(service)) == SOCKET_ERROR) {
        printf("bind() failed.\n");
        closesocket(ListenSocket);
        return;
      }  //----------------------
      // Listen for incoming connection requests 
      // on the created socket
      if (listen( ListenSocket, 1 ) == SOCKET_ERROR)
        printf("Error listening on socket.\n");  //----------------------
      // Create a SOCKET for accepting incoming requests.
      SOCKET AcceptSocket;
      printf("Waiting for client to connect...\n");  //----------------------
      // Accept the connection.
      while(1) {
        AcceptSocket = SOCKET_ERROR;
        while( AcceptSocket == SOCKET_ERROR ) {
          AcceptSocket = accept( ListenSocket, NULL, NULL );
        }
        printf("Client connected.\n");
        ListenSocket = AcceptSocket;
        break;
      }  WSACleanup();
      return;
    }