linux socket编程 用线程的服务器例子
来源:互联网 发布:word for mac 在哪里 编辑:程序博客网 时间:2024/05/22 01:31
#include <stdarg.h>
#include <stdio.h>
#include <signal.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <pthread.h>
struct sockargs {
int s;
struct sockaddr_in *remote;
};
void* process_server(void *args) {
int len,s;
time_t ti;
char buff[128];
struct sockaddr_in *remote;
struct sockargs connfd=*((struct sockargs *)args);
s=connfd.s;
remote=connfd.remote;
pthread_detach(pthread_self());
printf("connection from: %s:%d/n",inet_ntoa(remote->sin_addr),ntohs(remote->sin_port));
ti=time(NULL);
//snprintf(buff,sizeof(buff),"%s/r/n",ctime(&ti));
while((len=recv(s,buff,sizeof(buff),0))>0) {
buff[len]='/0';
send(s, buff,strlen(buff), 0);
bzero(buff,sizeof(buff));
}
free(remote);
free(args);
close(s);
return(NULL);
}
int main(int argc, char **argv) {
struct sockaddr_in *remote;
char *hname, *sname;
int s, c, len;
pthread_t tid;
struct sockargs *connfd;
if(argc < 2)
error(1,0,"parameters less than 2");
else if(argc == 2) {
hname = NULL;
sname = argv[1];
}
else if(argc == 3) {
hname = argv[1];
sname = argv[2];
}
s = server(hname, sname,"tcp");
len = sizeof(struct sockaddr);
while(1) {
remote=malloc(sizeof(struct sockaddr_in));
if((c=accept(s,(struct sockaddr *)remote,&len))<=0)
error(1,errno,"accept error!");
connfd=(struct sockargs *)malloc(sizeof(struct sockargs));
connfd->s=c;
connfd->remote=remote;
pthread_create(&tid,NULL,&process_server,(void *)connfd);
}
close(s);
exit(0);
}
- linux socket编程 用线程的服务器例子
- Linux下socket编程实现客户机服务器通信的例子
- Linux下socket编程实现客户机服务器通信的例子
- linux socket编程 多协议服务器例子
- socket编程服务器客户端例子
- Linux Socket编程 线程
- Linux Socket编程 线程
- Linux下socket编程之多线程TCP服务器
- socket编程:服务器与客户端简单交互的例子
- Linux下的socket编程-服务器
- linux socket编程 daemon例子
- Linux socket 编程简单例子
- Android基于客户端和服务器的Socket编程例子之Socket基础通讯--socket相关知识
- Android基于客户端和服务器的Socket编程例子之Socket基础通讯--socket模型使用
- linux 的 socket例子
- LINUX下的一个SOCKET编程的例子
- linux socket编程以及简单的tcp,udp的例子
- 网络编程:linux socket的select函数例子
- unxi域协议编程服务器端(tcp/udp)
- 学习笔记之集合中元素的顺序
- 在 Ajax.InPlaceEditor 中传递ID值
- unxi域协议编程客户端(tcp/udp)
- linux socket编程 daemon例子
- linux socket编程 用线程的服务器例子
- ping简单实现
- VS2005常用插件搜罗(开发效率提高)
- VS2005/AJAX-VS2005中AJAX简单应用
- AJAX/VS2005-ajax+vs2005新特色
- linux socket编程客户端模型(用getaddrinfo)
- linux socket编程服务端模型(用getaddrinfo)
- 用迭代器构建的单链表
- linux硬盘安装