TCP迭代服务器程序(Unix网络编程)

  • l7_620796
    了解作者
  • 6.4KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-10 09:23
    上传日期
Unix网络编程例子, 最简单的网络程序例子。
TCP迭代服务器程序.zip
  • TCP迭代服务器程序
  • server01.mak
    941B
  • client01.mak
    941B
  • makefile
    61B
  • server01.c
    2.6KB
  • client01.c
    1KB
内容介绍
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define LISTEN_PORT 9901 char *str_to_upper(char *str) { int len = strlen(str); while (len--) { if (islower(str[len])) str[len] = str[len] - 32; } return str; } int SetSockOpt(int sockfd) { int code; int optval; struct linger Linger = {0}; /* default */ Linger.l_onoff = 0; Linger.l_linger = 0; code = setsockopt(sockfd, SOL_SOCKET, SO_LINGER, (void *)&Linger, sizeof(Linger)); if (code == -1) return -1; optval = 1; code = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (void *)&optval, sizeof(optval)); if (code == -1) return -1; optval = 0; code = setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (void *)&optval, sizeof(optval)); if (code == -1) return -1; return 0; } int main(int argc, char *argv[]) { int code; int listenfd, connfd; struct sockaddr_in cliaddr, servaddr; socklen_t clilen = sizeof(cliaddr); char buf[128+1] = {0}; memset(&cliaddr, 0, sizeof(cliaddr)); memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(LISTEN_PORT); listenfd = socket(AF_INET, SOCK_STREAM, 0); if (listenfd == -1) { printf("socket error %d [%d] [%s]\n", listenfd, errno, strerror(errno)); return -1; } code = SetSockOpt(listenfd); if (code == -1) { printf("SetSockOpt error %d [%d] [%s]\n", code, errno, strerror(errno)); return -1; } code = bind(listenfd, (struct sockaddr*) &servaddr, sizeof(servaddr)); if (code == -1) { printf("bind error %d [%d] [%s]\n", code, errno, strerror(errno)); return -1; } code = listen(listenfd, 128); if (code == -1) { printf("listen error %d [%d] [%s]\n", code, errno, strerror(errno)); return -1; } while (1) { clilen = sizeof(cliaddr); memset(buf, 0, sizeof(buf)); connfd = accept(listenfd, (struct sockaddr*) &cliaddr, (socklen_t*) &cliaddr); if (connfd == - 1) return -4; code = read(connfd, buf, sizeof(buf) - 1); printf("%-3d接收到数据: [%s]\n", connfd, buf); if (code > 0) code = write(connfd, str_to_upper(buf), strlen(buf)); close(connfd); } return 0; }
评论
    相关推荐
    • Unix Echo服务器和客户端(C语言)
      有两个版本(C语言,内有完整的说明文档): 1.实现客户端发一句,服务器返回一个 2.客户端一次连接可以发送多句(每句就是一个package),服务器返回最初的5句(不足5句,就返回所有的)
    • DomainSocket:客户端-使用Unix域套接字的服务器通信
      服务器-使用UNIX域套接字的客户端通信 功能性 DomainSocket类提供Unix域套接字的抽象。 您可以创建服务器套接字和客户端套接字进行通信。 有一个Daemon类和Sender类(服务器和客户端)作为用法示例。 例子 您可以...
    • UNIX网络编程 第2版pdg
      论述了基本编程内容后,即转入高级套接口编程的相 关主题,包括IPv4与IPv6的互操作性、UNIX域协议、非阻塞I/O、路由套接口、广播、多播、线程、原始 套接口、数据链路访问等,对于客户—服务器程序的各种设计方法也...
    • putty【连接远程Unix服务器
      这个应该都知道吧,用于在Windows下连接远程Unix服务器,也可以自己用puttyGen自己生成证书。与你共享!
    • unix网络编程.rar
      socket编程相关,很适合学习网络编程开发、服务器开发 socket编程相关,很适合学习网络编程开发、服务器开发 socket编程相关,很适合学习网络编程开发、服务器开发
    • unixbench.7z
      unixbench 测试服务器CPU性能的工具,非常不错的!可以下载下来进行使用!很简单的! 可以下载
    • 主流服务器UNIX操作系统用户帐号的设置.
      主流服务器UNIX操作系统用户帐号的设置
    • unix-connect-开源
      Unix Connect可以以多种方式使用。 开发它是为了能够将Unix系统用作Z-NETZ中的服务器。 网关功能是一个副作用。 网关例程尤其是相对可移植的
    • GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
      guassdb100在redhat上安装包,单机部署的包,安装步骤请看我的文中介绍,经过大量实验搭建总结出来的文档