Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

linux Socket±à³ÌÈëÃÅ

ÒÔÇ°ÒѾ­½Ó´¥WindowsϵÄSocket±à³Ì£¬×î½üÒ²³¢ÊÔ×ÅÔÙlinuxÏÂʹÓÃSocket±à³Ì£¬ÏÂÃæÊÇÔÚÍøÉÏÕÒµÄÀý×Ó(ÒѾ­²âÊÔ¹ý)
 tcp_server.c:
#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 LENGTH_OF_LISTEN_QUEUE 10
#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)
 {
  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);
  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);
 }
 close(servfd);
 return 0;
}
tcp_clie


Ïà¹ØÎĵµ£º

LinuxϵÄʵʱÁ÷ýÌå±à³Ì

 
¼¶±ð£º ³õ¼¶
ФÎÄÅô
(xiaowp@263.net
), ˶ʿÑо¿Éú, ±±¾©Àí¹¤´óѧ¼ÆËã»úϵ
2004 Äê 2 ÔÂ 01 ÈÕ
Á÷
ýÌåÖ¸µÄÊÇÔÚÍøÂçÖÐʹÓÃÁ÷¼¼Êõ´«ÊäµÄÁ¬Ðøʱ»ùýÌ壬ÆäÌصãÊÇÔÚ²¥·ÅÇ°²»ÐèÒªÏÂÔØÕû¸öÎļþ£¬¶øÊDzÉÓñßÏÂÔر߲¥·ÅµÄ·½Ê½£¬ËüÊÇÊÓƵ»áÒé¡¢IPµç»°µÈÓ¦Óó¡ºÏ
µÄ¼¼Êõ»ù´¡¡£RTPÊǽøÐÐʵʱÁ÷ýÌå´«ÊäµÄ±ê׼ЭÒéº ......

LinuxÄÚ´æ¹ÜÀíÖ®slab·ÖÅäÆ÷·ÖÎö(ÐøÈý)

Áù£ºkmem_cache_allocµÄʵÏÖ·ÖÎö:
ÎÒÃÇÔÚÉÏÃæ¿ÉÒÔ¿´µ½£¬´´½¨Ò»¸öcacheÃèÊö·ûµÄʱºò£¬²¢Ã»ÓÐÕâÖ®·ÖÅäslabÊý¾Ý¡£ÏÖÔÚÎÒÃÇÀ´¿´Ò»ÏÂÔõô´ÓcacheÖÐÉêÇë¶ÔÏó
void * kmem_cache_alloc (kmem_cache_t *cachep, int flags)
{
     return __cache_alloc(cachep, flags);
}
ʵ¼ÊÉÏ»áµ÷ÓÃ__cache_allo ......

LinuxÏÂRPCµÄhello world

Linux ÏÂÃæʹÓÃRPCÐèҪʹÓõ½ÃüÁîrpcgen.
ÔÚLinuxÏ¿ª·¢RPC³ÌÐòÁ÷³ÌÈçÏ£º
1.дһ¸örpc³ÌÐò£¬
       Èçtest.x
2.ʹÓÃrpcgenÉú³É±ØÐëµÄÎļþ£¬Í¨³£ÊÇ¿Í»§¶ËºÍ·þÎñÆ÷¶ËÒÔ¼°Í·Îļþ
       $rpcgen test.x
3.ʹÓÃrpcgenÉú³É·þÎñÆ÷¶ËºÍ¿Í»§¶ËµÄCÓïÑÔ´úÂë
&n ......

The Linux Kernel Module Programming Guide

 http://www.faqs.org/docs/kernel/
µÄ11ºÍ12ÔÙÊÔÊÔ¡£
Linux Äں˵ÄWorkQueues API×öÁËÐÞ¸Ä
 
 
WorkQueue»úÖÆÔÊÐíÄں˴úÂëÔÚÍíÒ»µãµÄʱ¼äÖ´ÐС£Workqueueͨ¹ý´æÔÚµÄÒ»¸ö»òÕ߶à¸öרÃŵĽø³ÌʵÏÖ£¬È¥Ö´ÐжÓÁй¤×÷¡£ÒòΪÔÚ½ø³ÌµÄÉÏÏÂÎÄ»ã×ÜÖ´ÐУ¬Òò´ËÈç¹ûÐèÒª£¬Æä¿ÉÒÔsleep¡£WorkQueueÒ²¿ÉÒÔÑÓ³ÙÌض¨Ê±¼ä ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ