当前位置:  技术问答>linux和unix

初学网络编程,大家帮忙看看

    来源: 互联网  发布时间:2015-09-21

    本文导语:  服务器端: /*server.c*/ /*     */ /* multithread tcp server  */ /*     uestc  2005/04/08                 */ #include  #include  #include  /*for bzero()*/ #include  #include  #include  #include  /*for close()*/ #include  #include  #def...

服务器端:
/*server.c*/
/*     */
/* multithread tcp server  */
/*     uestc  2005/04/08                 */
#include 
#include 
#include  /*for bzero()*/
#include 
#include 
#include 
#include  /*for close()*/
#include 
#include 


#define  PORT 1234
#define BUFSIZE 1024
#define BACKLOG 5
struct ARG {
    int connfd;
    struct sockaddr_in client;
};
void process_cli(int connectfd,struct sockaddr_in client);
void *start_routine(void * arg);
int main(){
    
    struct sockaddr_in server;
    struct sockaddr_in client;
    int listenfd,connectfd;
    pthread_t thread;
    struct ARG *arg;
    int sin_size;
    pid_t pid;
    if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket() error");
exit(1);
    }
    int opt=SO_REUSEADDR;
    setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
    bzero(&server,sizeof(server));
    server.sin_family=AF_INET;
    server.sin_port = htons(PORT);
    server.sin_addr.s_addr= htonl(INADDR_ANY);
    if(bind(listenfd,(struct sockaddr *)&server, sizeof(server))==-1){
perror("bind() errorn");
exit(1);
    }
    if(listen(listenfd, BACKLOG)==-1){
perror("listen error");
exit(1);
    }
    sin_size=sizeof(struct sockaddr_in);
    while(1){
if((connectfd=accept(listenfd, (struct sockaddr *)&client,&sin_size))==-1){
    perror("accept() error");
    exit(1);
}
/*create thread*/
arg= (struct ARG*)malloc(sizeof(struct ARG));
arg->connfd = connectfd;
memcpy((void *)&(arg->client), &client, sizeof(client));
/*if (pthread_create(&thread, NULL, start_routine, (void *)arg)){
    perror("Pthread_create() error");
    exit(1);
}*/

printf("you get a connection from %s:%sn", inet_ntoa(arg->client.sin_addr),ntohs(arg->client.sin_port));
continue;
    }
    close(listenfd);
    return 0;
}
void process_cli(int connectfd, struct sockaddr_in client){
    int num;
    int i=0;
    char recvbuf[BUFSIZE],sendbuf[BUFSIZE];
    /*display client ip port*/
    printf("get a connection form %s %sn", inet_ntoa(client.sin_addr),ntohs(client.sin_port));
    while(num=recv(connectfd, recvbuf, BUFSIZE,0)){
recvbuf[num]='';
if(recvbuf[0]==10){
    printf("recieved an enter!n ");
    continue;
}
printf("Received message from %s : %s",inet_ntoa(client.sin_addr),recvbuf);
for(i=0;i

    
 
 

您可能感兴趣的文章:

  • 初学java网络编程的问题
  • 初学者,问一些关于linux下tcp/ip网络编程 的 入门问题
  • 初学linux,搞不定网络编程
  • 初学unix帮忙推荐本书!
  • 编译参数问题,初学者的问题,请多帮忙
  • 各位帮忙推荐一下那本UNIX书对初学者来说比较好?
  • 初学者的小问题,帮帮忙阿
  • 给初学者帮帮忙好吗?
  • 初学JAVA,请各位高手帮帮忙!
  • 初学Unix,请帮忙做出下面练习!
  • 初学者被那些高手耍了,帮帮忙吧!
  • 一个初学者的问题,请大家多帮忙
  • 在XP上安装FEDORA遇到的问题!!!初学,高手帮忙!!1
  • 初学者问题(2):关于super的使用问题,请大家多多帮忙。
  • 多帮忙,初学JAVA的人,该用什么书呢?(没有C基础的)
  • 初学者问题-------生成一个File对象。希望朋有帮忙!
  • 我是JAVA的一位初学者请各位师兄师姐帮忙看看下面的代码为什么会提示出错?
  • 初学者问问题,,请各位帮帮忙啊。
  • 初学JAVA编程有问题.高手来帮忙.
  • 嵌入式初学者想买个ARM9的板子,大家帮忙介绍一下啊。
  • Solaris中,我对未初始化的char*进行strlen()操作不报错! 初学.请多帮忙
  • 初学者的烦恼:编译器的选择与用法?谢谢各位大侠帮忙!
  • ?我是Linux初学者希望大家帮忙? jdk安装问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学 java 的朋友来和我交朋友,我也是初学。我的 QQ 号是 33555085
  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 我是个初学者,希望指点明津
  • 初学者用什么工具好?JBUILDER?JDK?
  • 对于初学者应该看什么样的java书籍
  • 初学java应该看那些书?
  • 初学linux看哪本书好?
  • 初学java,该看那些书,请朋友们指教
  • 我是初学者,该用什么java的“编译器”????
  • 初学java什么书好?
  • 对于初学者应该看什么样的书
  • 初学者:不是问题的问题?
  • 初学者这样检验自己的学习效果呢?
  • 初学JAVA,用哪个软件来调试和编译程序?
  • 初学者的问题??在线等待。
  • 各位高手大家好,我是初学LINUX想请教几个问题
  • 初学者的疑问
  • 从初学Linux到内核开发
  • 编程技术其它 iis7站长之家


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3