⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 《基于Symbian OS的手机开发与应用实践》这本书的配套源码。
💻 C
字号:

#if defined(WIN32)
#include "StdAfx.h"
#include <winsock2.h>
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#endif

void main(int argc, char* argv[])
{
    int cont,sock,newsock,addrlen;
    int bufsize = 1024;
    char *buffer = malloc(bufsize);
    struct sockaddr_in address;
    int err=0;

#if defined(WIN32)
    WORD wVersionRequested;
    WSADATA wsaData;

    printf("Starting\n");
    wVersionRequested = MAKEWORD( 2, 2 );
    err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) 
    {
        printf("Startup error %d\n", err);
        return;
    }
    
    if ( LOBYTE( wsaData.wVersion ) != 2 ||
        HIBYTE( wsaData.wVersion ) != 2 ) 
    {
        printf("WinSock version is wrong.\n");
        return; 
    }

#endif

    printf("Creating socket\n");
    sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if (sock<=0)
    {
        printf("Fail to create socket, error %d\n", sock);
        return;
    }

    printf("Binding socket\n");
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(8000);
    err = bind(sock,(struct sockaddr *)&address,sizeof(address));
    if ( err != 0)
    {
        printf("Fail to bind socket, error %d\n", err);
        return;
    }

    printf("Listening\n");
    listen(sock,3);
    addrlen = sizeof(struct sockaddr_in);
    newsock = accept(sock,(struct sockaddr *)&address,&addrlen);
    if (newsock <= 0)
    {
        printf("Fail to accept connection, error %d\n", newsock);
        return;
    }
    printf("The client %s is connected...\n",inet_ntoa(address.sin_addr));

    do
    {
        printf("Message to send: ");
        gets(buffer);
        send(newsock,buffer,bufsize,0);
        recv(newsock,buffer,bufsize,0);
        printf("Message recieved: %s\n",buffer);
    }while(strcmp(buffer,"/q")); //user want to quit

    close(newsock);
    close(sock);

#if defined(WIN32)
    WSACleanup();
#endif
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -