易截截图软件、单文件、免安装、纯绿色、仅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安装JDK1.6攻略

 网上找了很多,这个最有效,转载下
下载成功后上传至服务器任意目录
        2. 在当前目录输入
        sh jdk-6u2-linux-i586-rpm.bin
        3.看到 安装程序在询问您是否尊守许可协议页面 ,回车 ......

回顾:东京Linux内核大会合影,No女性

 这是出席在2009年10月20日在东京举行的Linux内核大会合影照。全分辨率照片。一个女性都没有。你认识其中的几位呢?
以下是出席会议的名单,有兴趣的朋友可以对一对:
Al Viro
Alan Cox
Andi Kleen
Andrew Morton
Andy Whitcroft
Arjan van de Ven
Arnd Bergmann
Avi Kivity
Benjamin Herrenschmidt
Brian ......

Linux内存管理之slab分配器分析(续四)


七:kmem_cache_free()的实现
kmem_cache_free用于把从slab中分配的对象释放掉,同分配一样,它首先会把它放到AC中,如果AC满了,则把对象释放到share链中,如果share也满了,也就把它释放至slab。来看具体的代码:
void kmem_cache_free (kmem_cache_t *cachep, void *objp)
{
     unsi ......

列出Linux源码下所有Makefile的方法

 一、要求:
1、能够显示出Makefile的总数
2、能显示一级目录下的Makefile总数、Makefile列表及其Makefile的内容
3、能将上述内容写入相应的文件
二、实例
rm -rf ~/Desktop/linux_Makefile/*
for i in `find . -maxdepth 1 -type d`
#仅仅是当前目录,所以请将本脚本放在linux源码目录下执行。
do
 e ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号