带makefile的socket交互程序

带makefile的socket交互程序

作者:LAMP小白  点击:2374  发布日期:2012-12-16 22:22:00  返回列表

一个完整的socket程序


首先是服务器端


#include mio_lt;stdio.hmio_gt;
#include mio_lt;stdlib.hmio_gt;
#include mio_lt;string.hmio_gt;
#include mio_lt;sys/types.hmio_gt;
#include mio_lt;sys/socket.hmio_gt;
#include mio_lt;unistd.hmio_gt;
#include mio_lt;netinet/in.hmio_gt;
#define PORT 8888
#define BACKLOG 2
    int main( int argc, char *argv[] )
    {
        int server_socket, client_socket, err, size;
        struct sockaddr_in server_addr;
        struct sockaddr_in client_addr;
        pid_t pid;
        char buffer[1024];
        server_socket = socket( AF_INET, SOCK_STREAM, 0 );
        if( -1 == server_socket )
        {
            printf("socket err!n");
            return -1;
        }
        bzero( mio_amp;server_addr, sizeof(server_addr) );
        server_addr.sin_family = AF_INET;
        server_addr.sin_addr.s_addr = htonl( INADDR_ANY );
        server_addr.sin_port = htons( PORT );
        err = bind( server_socket, (struct sockaddr*) mio_amp;server_addr, sizeof(server_addr) );
        if( -1 == err )
        {
            printf("bind failure!n");
            return -1;
        }
        err = listen( server_socket, BACKLOG );
        if( -1 == err )
        {
            printf("listen err or clients full!n");
            return -1;
        }
        printf("server start!n");
        int addrlen = sizeof( struct sockaddr_in );
        printf("len=%dn", addrlen);
        client_socket = accept( server_socket, ( struct sockaddr* ) mio_amp;client_addr, mio_amp;addrlen );
        if( -1 == client_socket )
        {
            printf("client connect failure!n");
        }
        else
        {
            size = read( client_socket, buffer, 1024);
            if( 0 == size )
            {
                printf("no data...n");
            }
            else
            {
                printf("data is %sn", buffer);
                write( client_socket, buffer, 1024);
            }
        }
        close(server_socket);
        return 0;
    }

然后是客户端



#include mio_lt;stdio.hmio_gt;
#include mio_lt;stdlib.hmio_gt;
#include mio_lt;string.hmio_gt;
#include mio_lt;sys/types.hmio_gt;
#include mio_lt;sys/socket.hmio_gt;
#include mio_lt;unistd.hmio_gt;
#include mio_lt;netinet/in.hmio_gt;
#define PORT 8888
    int main( void )
    {
        int s, ret, size;
        struct sockaddr_in server_addr;
        char str[] = "hello world!";
        char buffer[1024];
        s = socket( AF_INET, SOCK_STREAM, 0);
        if( -1 == s )
        {
            printf("socket errorn");
            return -1;
        }
        bzero( mio_amp;server_addr, sizeof(server_addr) );
        server_addr.sin_family = AF_INET;
        server_addr.sin_addr.s_addr = htonl( INADDR_ANY );
        server_addr.sin_port = htons( PORT );
        ret = connect( s, (struct sockaddr *)mio_amp; server_addr, sizeof(server_addr) );
        printf("ret = %dn", ret);
        write( s,  str, sizeof(str) );
        size = read( s, buffer, 1024);
        if( 0 == size )
        {
            printf("no repeat ... n");
        }
        else
        {
            printf("server re data is:%sn", buffer);
        }
        close(s);
        return 0;
    }


最后是make文件


all:mio_client mio_server
client:mio_client.o
    gcc -o mio_client tcp_client.o
server:mio_server.o
    gcc -o mio_server tcp_server.o
clean:
    rm -f client server *.o



首先make


[root@localhost tcp]# make

make: Warning: File `Makefilemio_#39; has modification time 6.7e+03 s in the future

cc   mio_client.c  -o mio_client

cc   mio_server.c  -o mio_server

make: warning: Clock skew detected. Your build may be incomplete.


然后执行服务器端


[root@localhost tcp]# ./mio_server

server start!

len=16

再执行客户端 就完成交互了!


[root@localhost tcp]# ./mio_client

ret = 0

server re data is:hello world!

[root@localhost tcp]#






上一篇:干掉失控的程序 下一篇:快递查询API
0