遇到个问题,现在在做一个东东。需要把客户端的一个数据结构传递到服务端去,这个该如何做呢?带我的老师只是告诉我说可以用http协议、TCP协议等,但是具体如何做呢?
我以前没有接触过,特来请教,最好能有这方面的资料或例子。谢谢!!!

解决方案 »

  1.   

    看看 socket 编程的例子吧,
    把结构体数据作为字节流发送就是了 ...
    一个简单的例子【Ref】:
    服务器:#include "stdafx.h"
    #include<stdio.h>
    #include<Winsock2.h>
    #include<string.h>
    #pragma comment(lib, "WS2_32.LIB")
    void main()
    {
    char buffrecv[100];
    memset(buffrecv,0,100);
    SOCKET serversocket;
    SOCKET newsocket;
    struct sockaddr_in serveraddr;
    struct sockaddr_in clientaddr;
    WSADATA wsaData; WSAStartup(MAKEWORD(2,2),&wsaData);
    serversocket=socket(AF_INET,SOCK_STREAM,0); serveraddr.sin_family=AF_INET;
    serveraddr.sin_port=htons(5555);
    serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); bind(serversocket,(sockaddr *)&serveraddr,sizeof(struct sockaddr_in));
    listen(serversocket,5); int size=sizeof(struct sockaddr_in);
    newsocket=accept(serversocket,(sockaddr *) &clientaddr,&size);
    recv(newsocket,buffrecv,100,0); printf("receive:\n");
    printf("%s",buffrecv);
    }客户端:#include "stdafx.h"
    #include<stdio.h>
    #include<Winsock2.h>
    #include<string.h>
    #pragma comment(lib, "WS2_32.LIB")
    void main()
    {
    /*
    char buffsend[100];
    char *p=buffsend;
        for(;((*p)=getchar())!='\n';)
    {
    p++;
    }
    p=buffsend;
    */
    char buffsend[100]="有只小鸟掉下水";
    SOCKET clientsocket;
    SOCKADDR_IN serveraddr;
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2,2),&wsaData);
    clientsocket=socket(AF_INET,SOCK_STREAM,0);
    Sleep(2000);
    if(clientsocket==INVALID_SOCKET)
    {
    printf("create clientsocket failed\n");
    exit(0);
    }
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_port = htons(5555);    
    serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    int result=connect(clientsocket,(SOCKADDR *)&serveraddr,sizeof(serveraddr));
    Sleep(2000);
    if(result==-1)
    {
    printf("connect server failed\n");
    exit(0);
    }
    result=send(clientsocket,buffsend,100,0);
    if(result==-1)
    {
    printf("send message failed\n");
    }
    Sleep(2000);
    }