服务器端:


#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

typedef struct sockaddr SOCKADDRMY;

int main()
{
        int sockID;
        struct sockaddr_in srvAddr;

        sockID = socket(AF_INET, SOCK_STREAM, 0);

        srvAddr.sin_family = AF_INET;
        srvAddr.sin_port = htons(8888);
        srvAddr.sin_addr.s_addr = inet_addr("192.168.28.69");

        bind(sockID, (SOCKADDRMY*)&srvAddr, sizeof(srvAddr));

        listen(sockID, 5);

        while(1)
        {
                int clisock;
                int nLen = sizeof(SOCKADDRMY);
                SOCKADDRMY cliAddr;
                char buf[128] = {0};
                char sendBuf[] = "this is server\n";

                clisock = accept(sockID, &cliAddr, &nLen);

                recv(clisock, buf, 128, 0);

                printf("%s\n", buf);

                send(clisock, sendBuf, strlen(sendBuf)+1, 0);

                close(clisock);

        }

        close(sockID);

}




客户端:


#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

typedef struct sockaddr SOCKADDRMY;

int main()
{
        int sockCli;
        struct sockaddr_in srvAddr;

        char sendBuf[] = "this is client!\n";
        char recvBuf[128] = {0};

        int nRes = 0;
        sockCli = socket(AF_INET, SOCK_STREAM, 0);

        srvAddr.sin_family = AF_INET;
        srvAddr.sin_port = htons(8888);
        srvAddr.sin_addr.s_addr = inet_addr("192.168.28.69");

        nRes = connect(sockCli, (SOCKADDRMY*)&srvAddr, sizeof(srvAddr));

        if(nRes != 0)
        {
                perror("connect error");
        }

        send(sockCli, sendBuf, strlen(sendBuf) + 1, 0);

        recv(sockCli, recvBuf, 128, 0);

        printf("%s\n", recvBuf);

        close(sockCli);

        return 0;

}



Linux套接字(TCP篇)_socket


Linux套接字(TCP篇)_#include_02