当前位置:软件学习 > 其它软件 >>

简单的套接字C/S通信

* =====================================================================================
 *
 *       Filename:  server.cpp
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  2011年12月19日 12时20分29秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Albert (), wutengfei32@163.com
 *        Company:  
 *
 * =====================================================================================
 */ 
 <pre name="code" class="cpp">#include <unistd.h> 
#include <fcntl.h> 
#include <netinet/in.h> 
#include <sys/socket.h> 
#include <sys/types.h> 
#include <iostream> 
#include <stdlib.h> 
 
using namespace std; 
 
int main(int argc,char**argv) 

    int s,s1,rc; 
    char buf[20]; 
    struct sockaddr_in local; 
 
    local.sin_family = AF_INET; 
    local.sin_port = htons(7500); 
    local.sin_addr.s_addr = htonl(INADDR_ANY); 
 
    s = socket(AF_INET,SOCK_STREAM,0); 
    if(s == -1) 
    { 
        cout<<"socket create error"<<endl; 
        exit(1); 
    } 
 
    rc = bind(s,(struct sockaddr*)&local,sizeof(local)); 
    if(rc == -1) 
    { 
        cout<<"bind error"<<endl; 
        exit(1); 
    } 
 
    listen(s,5); 
     
    s1 = accept(s,NULL,NULL); 
    if(s1 < 0) 
    { 
        cout<<"accept error"<<endl; 
        exit(1); 
    } 
 
    rc = recv(s1,buf,11,0); 
        //rc = read(s1,buf,11); 
 
        if(rc < 0) 
    { 
        cout<<"recv call error"<<endl; 
        exit(1);     
    } 
    cout<<"recv from client:"<<buf<<endl; 
     
    rc = send(s1,"hello client",11,0); 
        rc = write(s1,"hello client",11); 
 
        if(rc < 0) 
    { 
        cout<<"send error"<<endl; 
        exit(1); 
    } 
 
    return 0; 

/*
 * =====================================================================================
 *
 *       Filename:  client.cpp
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  2011年12月19日 12时36分25秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Albert (), wutengfei32@163.com
 *        Company:  
 *
 * =====================================================================================
 */ 
#include <unistd.h> 
#include <fcntl.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 
#include <stdlib.h> 
#include <iostream> 
 
using namespace std; 
 
int main(int argc,char**argv) 

    int s,rc; 
    struct sockaddr_in peer; 
    char buf[20]; 
     
    peer.sin_family = AF_INET; 
    peer.sin_addr.s_addr = inet_addr("127.0.0.1"); 
    peer.sin_port = htons(7500); 
 
    s = socket(AF_INET,SOCK_STREAM,0); 
    if(s < 0) 
    { 
        cout<<"socket create error"<<endl; 
        exit(1);     
    } 
 
    rc = connect(s,(struct sockaddr*)&peer,sizeof(peer)); 
    if(rc < 0) 
    { 
        cout<<"conect error"<<endl; 
        exit(1); 
    } 
 
    rc = send(s,"hello server",12,0); 
    //rc = write(s,"hello server",12); 
 
        if(rc < 0)    
    { 
        cout<<"send error"<<endl;    
        exit(1); 
    } 
     
    rc = recv(s,buf,12,0); 
        //rc = read(s,buf,12); 
     
       if(rc < 0)     
    { 
        cout<<"recv error"<<endl;    
        exit(1); 
    } 
 
    cout<<"recv from server:"<<buf<<endl; 
 
    return 0; 

补充:软件开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,