¡¾·ÖÏí¡¿Linuxϸ÷ÀàTCPÍøÂç·þÎñÆ÷µÄʵÏÖÔ´´úÂë
Linuxϸ÷ÀàTCPÍøÂç·þÎñÆ÷µÄʵÏÖÔ´´úÂë,F9LpR0t[(WY#Ll-mN D7M
´ó¼Ò¶¼ÖªµÀ¸÷ÀàÍøÂç·þÎñÆ÷³ÌÐòµÄ±àд²½Ö裬²¢ÇÒ¶¼ÖªµÀÍøÂç·þÎñÆ÷¾ÍÁ½´óÀࣺѻ··þÎñºÍ²¢·¢·þÎñ¡£ÕâÀ︽ÉÏÔ´´úÂëÀ´¸öС½á°É¡£ZMbw1HY `({9P
Ê×ÏÈ£¬Ñ»·ÍøÂç·þÎñÆ÷±à³ÌʵÏֵIJ½ÖèÊÇÕâÑùµÄ£º
[url][IMG]http://zhoulifa.bokee.com/inc/directsocket.png[/IMG] [/url] zIFS.N@#T|:g#o
ÕâÖÖ·þÎñÆ÷Ä£ÐÍÊǵäÐÍÑ»··þÎñ£¬Èç¹û²»¼ÓÉÏ¶à½ø³Ì/Ï̼߳¼Êõ£¬´ËÖÖ·þÎñÍÌÍÂÁ¿ÓÐÏÞ£¬´ó¼Ò¶¼¿ÉÒÔ¿´µ½£¬Èç¹ûǰһ¸öÁ¬½Ó·þÎñÊý¾ÝûÓÐÊÕ·¢Íê±ÏºóÃæµÄÁ¬½Óû°ì·¨´¦Àí¡£ËùÒÔÒ»°ãÓÐ¶à½ø³Ì¼¼Êõ£¬¶ÔÒ»¸öÐÂÁ¬½ÓÆôÓÃÒ»¸öнø³ÌÈ¥´¦Àí£¬¶ø¼àÌýsocket¼ÌÐø¼àÌý¡£
k4OeV+w$|W ]
/************¹ØÓÚ±¾Îĵµ********************************************
*filename: Linuxϸ÷ÀàTCPÍøÂç·þÎñÆ÷µÄʵÏÖÔ´´úÂë*B$z(z[$Q'~1Y
*purpose: ¼Ç¼Linuxϸ÷Ààtcp·þÎñ³ÌÐòÔ´´úÂë
*wrote by: zhoulifa(zhoulifa@163.com) ÖÜÁ¢·¢([url]http://zhoulifa.bokee.com[/url])6k)u5ZM#YQ3B!B
Linux°®ºÃÕß Linux֪ʶ´«²¥Õß SOHO×å ¿ª·¢Õß ×îÉó¤CÓïÑÔ
*date time:2006-07-04 22:00:00q+AI,S s2e!~r
*Note: ÈκÎÈË¿ÉÒÔÈÎÒâ¸´ÖÆ´úÂë²¢ÔËÓÃÕâЩÎĵµ£¬µ±È»°üÀ¨ÄãµÄÉÌÒµÓÃ;irXJ7vpA7s0h
* µ«Çë×ñÑGPL
*Hope:Ï£ÍûÔ½À´Ô½¶àµÄÈ˹±Ï××Ô¼ºµÄÁ¦Á¿£¬Îª¿ÆÑ§¼¼Êõ·¢Õ¹³öÁ¦+@n I;to4\.H+B
*********************************************************************/
Ò»¸öÑ»·TCP·þÎñÔ´´úÂ루ÒòΪÓÃfork½øÐÐ¶à½ø³Ì·þÎñÁË£¬ËùÒÔÕâÖÖ·þÎñÏÖʵÖÐÒ²ÓÐÓã©ÈçÏ£ºdT$l+ea
[CODE] XHP(G&t3t&{:n
/*----------------------Ô´´úÂ뿪ʼ--------------------------------------------*/MQGu7n} @
#include <stdio.h> TN4?C(UE8V1NZ
#include <stdlib.h>*c`2o@7s9z
#include <errno.h>o;a$h$J} `8^!VT
#include <string.h>D,O @AD!n
#include <sys/types.h>\]hW:t i2}
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
/*********************************************************************u"x3g$O8N+f6{w:oA
*filename: cycletcpserver.c b:I1M@k-b'^c
*purpose: Ñ»·tcp·þÎñ¶Ë³ÌÐò
*tidied by: zhoulifa(zhoulifa@163.com) ÖÜÁ¢·¢(http://zhoulifa.bokee.com)fq4@_,Z6E
Linux°®ºÃÕß Linux֪ʶ´«²¥Õß SOHO×å ¿ª·¢Õß ×îÉó¤CÓïÑÔ0\W&v6Rg2Dr7_yu
*date time:2006-07-04 22:00:00
*Note: ÈκÎÈË¿ÉÒÔÈÎÒâ¸´ÖÆ´úÂë²¢ÔËÓÃÕâЩÎĵµ£¬µ±È»°üÀ¨ÄãµÄÉÌÒµÓÃ; X o1cF]~%@
* µ«Çë×ñÑGPL
*Thanks to: Google.com
*********************************************************************/
int main(int argc, char ** argv)'^B(YU] N2g
{6l{!^K1Fi`L:G
int sockfd,new_fd; /* ¼àÌýsocket: sock_fd,Êý¾Ý´«Êäsocket: new_fd */i+u,_uE4eJJ(A}
struct sockaddr_in my_addr; /* ±¾»úµØÖ·ÐÅÏ¢ */
struct sockaddr_in their_addr; /* ¿Í»§µØÖ·ÐÅÏ¢ */
unsigned int sin_size, myport, lisnum;
if(argv[1]) myport = atoi(argv[1]);
else myport = 7838;
if(argv[2]) lisnum = atoi(argv[2]);
else lisnum = 2;
w\\ec!ZQ(]
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);$JPp T"s-A
}(h$])`E&D C"x#` i%n
my_addr.sin_family=PF_INET;KiK'b d,[b"^:?
my_addr.sin_port=htons(myport);
my_addr.sin_addr.s_addr = INADDR_ANY;,M8e0R6Hm!wG
bzero(&(my_addr.sin_zero), 0);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
perror("bind");
exit(1);
}1S@I er/WP
if (listen(sockfd, lisnum) == -1) {
perror("listen");
exit(1);.aIg/T*Nu}@
}5t+S O,BM [Mg/y#v
while(1) {
sin_size = sizeof(struct sockaddr_in);J{ wo"Q5K$F9TA1p-\a
if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) {8[7p$~8l5`0SM
perror("accept");3|L*k~f4@P
continue;qF1puW)s
}
printf("server: got connection from %s\n",inet_ntoa(their_addr.sin_addr));
if (!fork()) { /* ×Ó½ø³Ì´úÂë¶Î */iW&p8DS^YT;J3H
if (send(new_fd, "Hello, world!\n", 14, 0) == -1) {
perror("send");~r5||?q+[~
close(new_fd);a(ay/{v
exit(0);
}0pI4}|c t'i'q G#N
}
close(new_fd); /*¸¸½ø³Ì²»ÔÙÐèÒª¸Ãsocket*/
waitpid(-1,NULL,WNOHANG);/*µÈ´ý×Ó½ø³Ì½áÊø£¬Çå³ý×Ó½ø³ÌËùÕ¼ÓÃ×ÊÔ´*/3J,AK+[W,P6]p(G
}V4Sq#xi'K
}
/*----------------------Ô´´úÂë½áÊø--------------------------------------------*/
[/CODE]
Ò»¸ö²âÊÔ¿Í»§¶Ë´úÂëÈçÏ£ºlh3U&o3{g
[CODE]
/*----------------------Ô´´úÂ뿪ʼ--------------------------------------------*/o*p Cze U
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>7Z5zbh x*i/^
#include <netdb.h>$RE*E8_'Ev
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define MAXDATASIZE 100 /*ÿ´Î×î´óÊý¾Ý´«ÊäÁ¿ */.o9aFU-|J-Xp`
/*********************************************************************
*filename: cycletcpclient.c7bq^2q ~/{}
*purpose: Ñ»·tcp¿Í»§¶Ë³ÌÐò SDwG*U PF
*tidied by: zhoulifa(zhoulifa@163.com) ÖÜÁ¢·¢(http://zhoulifa.bokee.com)Iu RE _5r8VI
Linux°®ºÃÕß Linux֪ʶ´«²¥Õß SOHO×å ¿ª·¢Õß ×îÉó¤CÓïÑÔ
*date time:2006-07-04 22:20:008o jo%t.?o
*Note: ÈκÎÈË¿ÉÒÔÈÎÒâ¸´ÖÆ´úÂë²¢ÔËÓÃÕâЩÎĵµ£¬µ±È»°üÀ¨ÄãµÄÉÌÒµÓÃ;Z:~R1SD6x
* µ«Çë×ñÑGPL
*Thanks to: Google.com'Q F?2Lem:g
*Hope:Ï£ÍûÔ½À´Ô½¶àµÄÈ˹±Ï××Ô¼ºµÄÁ¦Á¿£¬Îª¿ÆÑ§¼¼Êõ·¢Õ¹³öÁ¦'XN |vF
*********************************************************************/
int main(int argc, char *argv[])
{.Pk"} fbT#v8^H,M
int sockfd, numbytes;
char buf[MAXDATASIZE];
struct hostent *he;