青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Linux Socket編程實例(一個Hello World程序)

在Linux下寫了個小的socket程序,分為客戶端和服務器端,服務端開一個端口(2000),做為一個daemon,等待客戶的連接請求.一旦有客戶連接,服務器端打印出客戶端的IP地址和端口,并且向服務器端發送歡迎信息和時間.下面是服務端的代碼(tcpserver.c).由于這只是個簡單的程序,所以只用了單線程實現!

/* *
 * Tcp Server program, It is a simple example only.
 * zhengsh 200520602061 2
 * when client connect to server, send a welcome message and timestamp in server.
  
*/
 

#include  
<stdio.h> 
#include  
<sys/socket.h> 
#include  
<unistd.h> 
#include  
<sys/types.h> 
#include  
<netinet/in.h> 
#include  
<stdlib.h> 
#include  
<time.h> 
 
#define  SERVER_PORT 20000  //  define the defualt connect port id 
#define  LENGTH_OF_LISTEN_QUEUE 10  // length of listen queue in server 
#define  BUFFER_SIZE 255 
#define  WELCOME_MESSAGE "welcome to connect the server. " 

int main(int argc, char** argv)
{
       
int  servfd,clifd;
       
struct  sockaddr_in servaddr,cliaddr;

       
if  ((servfd  =  socket(AF_INET,SOCK_STREAM, 0 ))  <   0 )
         
{
              printf( 
" create socket error!\n " );
              exit( 
1 );
       }
 
 
       bzero( 
& servaddr, sizeof (servaddr));

       servaddr.sin_family  
=  AF_INET;
       servaddr.sin_port  
=  htons(SERVER_PORT);
       servaddr.sin_addr.s_addr  
=  htons(INADDR_ANY);

       
if  (bind(servfd,( struct  sockaddr * ) & servaddr, sizeof (servaddr)) < 0 )
         
{
              printf( 
" bind to port %d failure!\n " ,SERVER_PORT);
              exit( 
1 );
       }
 
 
        
if  (listen(servfd,LENGTH_OF_LISTEN_QUEUE)  <   0 )
         
{
              printf( 
" call listen failure!\n " );
              exit( 
1 );
       }
 
 
        
while  ( 1 )
         
// server loop will nerver exit unless any body kill the process 

              
char  buf[BUFFER_SIZE];
              
long  timestamp;
              socklen_t length  
=   sizeof (cliaddr);
              clifd  
=  accept(servfd,( struct  sockaddr * ) & cliaddr, & length);

               
if  (clifd  <   0 )
                
{
                     printf( 
" error comes when call accept!\n " );
                     
break ;
              }
 
 
              strcpy(buf,WELCOME_MESSAGE);

               
// inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE); 

              printf( 
" from client,IP:%s,Port:%d\n " ,inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));

              timestamp  
=  time(NULL);

              strcat(buf, 
" timestamp in server: " );
              strcat(buf,ctime( 
& timestamp));

              send(clifd,buf,BUFFER_SIZE, 
0 );

              close(clifd);           

       }
 // exit 
 
       close(servfd);

        
return   0 ;
}


 客戶每次用一個隨機的端口連接服務器,并接收來自服務器的歡迎信息,然后打印出來(tcpclient).運行的時候接受一個參數,也就是服務器的ip地址.
/*  Tcp client program, It is a simple example only.
 * zhengsh 200520602061 2
 * connect to server, and echo a message from server.
*/
 


#include 
<stdio.h>
#include 
<sys/socket.h>
#include 
<unistd.h>
#include 
<sys/types.h>
#include 
<netinet/in.h>
#include 
<stdlib.h> 


#define  SERVER_PORT 20000  //  define the defualt connect port id 
#define  CLIENT_PORT ((20001+rand())%65536)  //  define the defualt client port as a random port 
#define  BUFFER_SIZE 255 
#define  REUQEST_MESSAGE "welcome to connect the server.\n" 


void  usage(char* name)
{
       printf( 
" usage: %s IpAddr\n " ,name);
}



int  main(int argc, char** argv)
{
       
int  servfd,clifd,length = 0;
       
struct  sockaddr_in servaddr,cliaddr;
       socklen_t socklen  
=   sizeof (servaddr);
       
char  buf[BUFFER_SIZE];

        
if (argc < 2 )
         
{
              usage(argv[ 
0 ]);
              exit( 
1 );
       }
 

       
if ((clifd  =  socket(AF_INET,SOCK_STREAM, 0 ))  <   0 )
         
{
             printf( 
" create socket error!\n " );
             exit( 
1 );
       }
 
 
       srand(time(NULL)); 
// initialize random generator 
 
       bzero( 
& cliaddr, sizeof (cliaddr));
       cliaddr.sin_family  
=  AF_INET;
       cliaddr.sin_port  
=  htons(CLIENT_PORT);
       cliaddr.sin_addr.s_addr  
=  htons(INADDR_ANY);

       bzero( 
& servaddr, sizeof (servaddr));
       servaddr.sin_family  
=  AF_INET;
       inet_aton(argv[ 
1 ], & servaddr.sin_addr);
       servaddr.sin_port  
=  htons(SERVER_PORT);
      
// servaddr.sin_addr.s_addr = htons(INADDR_ANY); 

       
if  (bind(clifd, (struct sockaddr* ) &cliaddr, sizeof (cliaddr)) < 0 )
       
{
              printf( 
" bind to port %d failure!\n " ,CLIENT_PORT);
              exit( 
1 );
       }
 

        
if (connect(clifd,( struct  sockaddr * ) & servaddr, socklen)  <   0 )
       
{
              printf( 
" can't connect to %s!\n ", argv[ 1 ]);
              exit( 
1 );
       }
 

       length  
=  recv(clifd, buf, BUFFER_SIZE, 0);
        
if  (length < 0)
        
{
              printf( 
" error comes when recieve data from server %s! ", argv[1] );
              exit( 
1 );
       }
 

       printf( 
" from server %s :\n\t%s", argv[1], buf);

       close(clifd);
       
return 0;
}
 



程序在Fedora core 4下通過編譯,有幾個warining.但是不影響.

posted on 2006-04-20 17:49 楊粼波 閱讀(16082) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程Linux編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩国产小视频| 久久精品国产亚洲精品| 国产精品国产自产拍高清av| 欧美久久在线| 欧美大片免费观看| 欧美三级视频在线| 久久全球大尺度高清视频| 欧美二区在线播放| 亚洲美女精品久久| 在线亚洲美日韩| 精品成人一区二区三区| 狠狠色丁香久久综合频道| 伊人久久亚洲影院| 亚洲久色影视| 久久久国产视频91| 欧美大片一区二区| 国产精品国产三级国产普通话三级| 欧美视频中文字幕| 黄色一区二区三区四区| 最新国产乱人伦偷精品免费网站| 亚洲欧洲午夜| 性做久久久久久久久| 欧美大片在线观看| 日韩午夜免费| 久久只有精品| 国产精品va在线播放| 激情av一区二区| 亚洲影院在线观看| 欧美国产一区二区三区激情无套| 一区二区欧美日韩视频| 久久久久久成人| 国产精品激情av在线播放| 又紧又大又爽精品一区二区| 亚洲天堂av在线免费| 美女精品在线观看| 亚欧美中日韩视频| 欧美日韩精品| 亚洲国产精品一区二区三区| 性欧美大战久久久久久久久| 亚洲精品免费一区二区三区| 午夜精品久久| 国产精品vip| 日韩一本二本av| 欧美激情1区2区3区| 久久国产精品久久久久久电车| 欧美性开放视频| 中文欧美日韩| 一本久久综合亚洲鲁鲁| 欧美日韩999| 99国产精品99久久久久久粉嫩| 久久免费国产| 欧美亚洲视频一区二区| 国产精品系列在线| 亚洲综合电影一区二区三区| 亚洲每日更新| 欧美日韩一视频区二区| 在线视频中文亚洲| 亚洲国产成人在线视频| 久久亚洲春色中文字幕久久久| 狠狠色综合网| 欧美国产先锋| 欧美日本精品| 久久久99精品免费观看不卡| 欧美有码在线观看视频| 一区二区三区偷拍| 亚洲人成亚洲人成在线观看图片| 欧美freesex交免费视频| 亚洲裸体在线观看| 99re成人精品视频| 国产精品入口日韩视频大尺度| 欧美一区二区三区久久精品茉莉花| 亚洲欧美日本国产有色| 国产亚洲精品v| 毛片av中文字幕一区二区| 老司机精品久久| 一本久久综合亚洲鲁鲁| 亚洲图片在线观看| 国产一区二区剧情av在线| 免费h精品视频在线播放| 欧美成人精品h版在线观看| 一本久久综合亚洲鲁鲁| 欧美亚洲免费| 亚洲精选成人| 亚洲免费在线看| 在线日韩av| 亚洲美女福利视频网站| 国产亚洲毛片在线| 亚洲国产天堂久久综合网| 国产精品成人aaaaa网站| 久久久久久亚洲精品中文字幕 | 在线观看欧美视频| 亚洲黄色高清| 国产日韩综合一区二区性色av| 欧美成人免费视频| 国产精品成人一区二区| 你懂的国产精品| 国产精品久久久久一区二区三区共| 久热精品视频在线| 国产精品久久久久影院色老大| 麻豆精品一区二区综合av| 国产精品成人播放| 亚洲国产日韩美| 国产婷婷97碰碰久久人人蜜臀| 亚洲日本中文字幕| 一区二区三区在线看| 亚洲免费观看| 91久久在线播放| 久久精品综合一区| 午夜宅男久久久| 欧美日韩国内| 亚洲黄色在线视频| 在线播放一区| 亚洲欧美日韩国产中文 | 一区二区日韩免费看| 欧美一区二区三区四区夜夜大片 | 欧美网站在线观看| 久久免费视频在线观看| 国产精品久久一区二区三区| 亚洲国产一区二区a毛片| 依依成人综合视频| 性伦欧美刺激片在线观看| 久久精品导航| 欧美影院成人| 欧美.日韩.国产.一区.二区| 久久久av毛片精品| 国产日韩在线不卡| 亚洲综合久久久久| 欧美一级在线视频| 国产精品jizz在线观看美国| 亚洲美洲欧洲综合国产一区| 日韩网站在线| 欧美日韩免费观看中文| 日韩视频免费观看高清完整版| 99精品福利视频| 欧美日韩午夜精品| 亚洲午夜精品一区二区三区他趣| 亚洲一区二区三区精品视频| 欧美私人啪啪vps| 亚洲图片在线| 久久se精品一区二区| 国产午夜精品一区理论片飘花| 亚洲欧美日韩中文在线制服| 久久久国产视频91| **网站欧美大片在线观看| 久久综合久色欧美综合狠狠 | 免费日韩精品中文字幕视频在线| 激情欧美一区二区三区在线观看 | 久久久夜夜夜| 奶水喷射视频一区| 亚洲区一区二区三区| 欧美电影电视剧在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 一本色道久久综合亚洲精品婷婷| 欧美视频在线看| 欧美有码在线观看视频| 欧美gay视频| 中文精品在线| 国产中文一区二区| 欧美wwwwww| 亚洲一区二区三区成人在线视频精品| 亚洲欧美日韩一区二区三区在线观看| 国产欧美日韩视频一区二区三区 | 欧美电影打屁股sp| 国产精品99久久久久久宅男| 久久精品亚洲精品国产欧美kt∨| 亚洲风情在线资源站| 欧美视频日韩| 久久青青草原一区二区| 一区二区欧美日韩视频| 久久综合狠狠综合久久综合88| 日韩视频在线你懂得| 国产麻豆精品久久一二三| 亚洲精品一区二区网址 | 香蕉久久夜色精品国产| 欧美国产一区在线| 久久成人精品无人区| 亚洲国产高清在线| 欧美激情精品久久久久久黑人| 亚洲欧美视频在线观看视频| 欧美激情亚洲自拍| 久久精品综合一区| 亚洲私人影院| 亚洲免费精品| 亚洲高清久久| 久热精品在线视频| 国产欧美一区二区精品秋霞影院 | 久久久久久久激情视频| 亚洲国内高清视频| 久久婷婷一区| 西西裸体人体做爰大胆久久久| 亚洲精品偷拍| 尤物视频一区二区| 国产婷婷色一区二区三区在线| 欧美日一区二区三区在线观看国产免| 久久午夜精品| 久久久精品国产99久久精品芒果| 亚洲性夜色噜噜噜7777| 99re热精品| 99视频一区| 欧美不卡视频一区|