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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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程序,分為客戶端和服務(wù)器端,服務(wù)端開一個端口(2000),做為一個daemon,等待客戶的連接請求.一旦有客戶連接,服務(wù)器端打印出客戶端的IP地址和端口,并且向服務(wù)器端發(fā)送歡迎信息和時間.下面是服務(wù)端的代碼(tcpserver.c).由于這只是個簡單的程序,所以只用了單線程實現(xiàn)!

/* *
 * 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 ;
}


 客戶每次用一個隨機的端口連接服務(wù)器,并接收來自服務(wù)器的歡迎信息,然后打印出來(tcpclient).運行的時候接受一個參數(shù),也就是服務(wù)器的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 楊粼波 閱讀(16071) 評論(0)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程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>
            老司机精品视频网站| 国自产拍偷拍福利精品免费一| 国产伦精品一区二区三区在线观看| 99re6这里只有精品视频在线观看| 久久国产婷婷国产香蕉| 欧美成人69| 欧美激情一区二区三区在线| 亚洲国产欧美日韩精品| 亚洲欧洲一区| 欧美激情成人在线| 久久国产精品久久国产精品| 欧美国产亚洲视频| 久久亚洲春色中文字幕| 国际精品欧美精品| 欧美一区二区视频免费观看| 亚洲七七久久综合桃花剧情介绍| 欧美一区影院| 国产欧美日韩伦理| 一本色道久久88亚洲综合88| 国产一区激情| 亚洲欧美中文另类| 午夜国产不卡在线观看视频| 国产精品黄色在线观看| 性欧美xxxx大乳国产app| 日韩视频中文字幕| 欧美激情久久久久久| 一二三四社区欧美黄| 亚洲在线免费视频| 欧美日韩国产综合久久| 久久国产一二区| 黄色一区二区三区四区| 亚洲欧美一级二级三级| 女人香蕉久久**毛片精品| 亚洲精品一区二区网址| 欧美一区二区免费| 国产视频久久| 在线亚洲电影| 牛牛国产精品| 亚洲欧美日韩综合国产aⅴ| 精品999在线观看| 欧美黄色网络| 中文国产一区| 久久精品国产69国产精品亚洲| 极品日韩av| 久久精品视频在线播放| 99国内精品久久久久久久软件| 久久国产色av| 欧美一区二区三区在线看| 国产精品一区二区三区成人| 香蕉精品999视频一区二区| 亚洲人成精品久久久久| 最新日韩在线| 亚洲激情自拍| 一区二区三区四区五区精品视频| 最新69国产成人精品视频免费| 久久久97精品| 美女精品国产| 久久久av水蜜桃| 久久久久久久久久久成人| 在线欧美一区| 中文一区二区在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲免费高清视频| 亚洲系列中文字幕| 午夜激情亚洲| 亚洲精品美女在线| 日韩午夜中文字幕| 亚洲日韩第九十九页| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美日本三区| 久久久久久有精品国产| 欧美精品在线看| 欧美日本不卡高清| 国产欧美一区二区色老头| 美女主播精品视频一二三四| 久久精品国产精品亚洲综合| 欧美不卡一区| 欧美亚洲综合久久| 欧美暴力喷水在线| 校园春色综合网| 91久久精品日日躁夜夜躁欧美 | 亚洲无亚洲人成网站77777| 亚洲国产精品999| 亚洲国产精品黑人久久久| 国产精品乱子久久久久| 亚洲欧洲精品一区二区| 亚洲国产成人一区| 久久成人一区| 久久综合色播五月| 国产亚洲一区二区三区| 亚洲一区三区视频在线观看| 一本色道久久综合精品竹菊| 国产精品视频男人的天堂| 久久久久久穴| 国产日韩精品电影| 9久re热视频在线精品| 樱桃国产成人精品视频| 99精品99久久久久久宅男| 国产自产女人91一区在线观看| 亚洲国产导航| 亚洲欧美偷拍卡通变态| 欧美体内谢she精2性欧美| 亚洲欧美国产高清| 亚洲狼人综合| 在线观看91精品国产入口| 欧美成人久久| 国产毛片精品国产一区二区三区| 久久精品一区| 欧美成人久久| 欧美一区激情| 国产欧美一区二区精品性色| 欧美成年人视频网站| 国产欧美日韩不卡免费| 性欧美大战久久久久久久免费观看| 欧美va亚洲va国产综合| 久久精品首页| 国产精品自拍三区| 99精品99| 西西裸体人体做爰大胆久久久| 国产日韩欧美自拍| 久热精品视频在线免费观看| 久久中文字幕导航| 亚洲一区在线看| 欧美有码在线观看视频| 亚洲精品国产精品国自产观看浪潮| 久久av红桃一区二区小说| 亚洲尤物在线视频观看| 麻豆91精品91久久久的内涵| 免费看成人av| 国产日韩精品一区二区浪潮av| 欧美激情一区二区三区| 亚洲人成啪啪网站| 男女视频一区二区| 亚洲激情午夜| 亚洲国产三级网| 欧美好骚综合网| 亚洲欧美在线免费| 国自产拍偷拍福利精品免费一| 99热免费精品在线观看| 亚洲日韩欧美视频| 国产精品狠色婷| 亚洲天堂成人在线观看| 9久草视频在线视频精品| 欧美精品麻豆| 亚洲高清视频一区| 亚洲午夜黄色| 国产精品一区二区a| 亚洲美女网站| 久久久亚洲一区| 亚洲成色www8888| 国产欧美日本一区视频| 久久久爽爽爽美女图片| 男女视频一区二区| 午夜精品理论片| 一区二区三区.www| 亚洲高清不卡av| 久久精品91久久久久久再现| 亚洲砖区区免费| 亚洲婷婷综合久久一本伊一区| 久久影院午夜片一区| 一本色道久久综合狠狠躁篇怎么玩 | 久久精品视频在线免费观看| 国产午夜精品全部视频在线播放| 亚洲视频在线视频| 亚洲福利视频一区| 久久久久久亚洲精品杨幂换脸| 日韩一级免费| 亚洲第一中文字幕| 国精产品99永久一区一区| 国产精品国产三级国产aⅴ浪潮| 欧美xxx在线观看| 免费观看一级特黄欧美大片| 亚洲欧美日韩视频二区| 一区二区三区免费网站| 亚洲精品视频二区| 欧美成人国产va精品日本一级| 久久精品五月婷婷| 麻豆精品在线播放| 女女同性女同一区二区三区91| 亚洲欧美国产视频| 在线亚洲成人| 激情一区二区三区| 亚洲国产1区| 亚洲婷婷在线| 午夜欧美精品久久久久久久| 亚洲精品美女在线观看播放| 黄色成人免费网站| 亚洲免费激情| 亚洲午夜精品视频| 欧美激情一区二区三区在线视频| 亚洲天堂成人| 久久综合久久综合久久| 久久久999| 欧美激情精品| 亚洲国产99| 欧美一区成人| 亚洲日本中文| 久热成人在线视频| 国产欧美日韩综合| 亚洲欧美在线免费观看|