1. 借助服务器实现小写转大写的程序:

  客户端:发送任意小写字母到服务器端。

  服务器端:接收小写字母,转为大写,回传给客户端,然后客户端显示到屏幕。

  

#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <arpa/inet.h> //结构体struct sockaddr_in的头文件
#include <ctype.h> //toupper()函数头文件 #define SERV_IP "127.0.0.1" //IP地址
#define SERV_PORT 6666 //端口号不能大于65535,1000以下的端口号一般给系统使用,用户使用端口号一般从3000以上 int main(void)
{
int lfd, cfd;
struct sockaddr_in serv_addr, clie_addr;
socklen_t clie_addr_len;
char buf[BUFSIZ];//操作系统内嵌的宏BUFSIZ,指定buf大小
int n, i; lfd = socket(AF_INET, SOCK_STREAM, ); //初始化结构体
serv_addr.sin_family = AF_INET; //ipv4
serv_addr.sin_port = htons(SERV_PORT); //htons端口号转化(本地host转为网络network)
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); //htonl IP地址转化(本地host转为网络network) INADDR_ANY表示本地有效任意IP(直接就是数值类型) bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); listen(lfd, );//同时允许128个客户端向我发起连接(默认值为128,最大上限就是128) clie_addr_len = sizeof(clie_addr);//求出客户端clie_addr结构体(IP、端口)的长度
cfd = accept(lfd, (struct sockaddr *)&clie_addr, &clie_addr_len);//阻塞等待 while () {
n = read(cfd, buf, sizeof(buf));//n为实际读到的字节
for (i = ; i < n; i++)
buf[i] = toupper(buf[i]); //小写转为大写
write(cfd, buf, n);
} close(lfd);//关闭文件描述符
close(cfd); return ;
}

  开启两个终端,终端1编译并执行服务端程序:

    

  此时服务器程序运行到accept(),并阻塞等待。

  终端2执行:

    

  nc命令中,n代表Network,c代表Connect <nc简称“脑残”>

  常用nc来测试服务端程序。

1. Socket网络编程的更多相关文章

  1. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  2. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  3. Python全栈【Socket网络编程】

    Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...

  4. python之Socket网络编程

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...

  5. Python之路【第七篇】python基础 之socket网络编程

    本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket  网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...

  6. Socket网络编程-基础篇

    Socket网络编程 网络通讯三要素: IP地址[主机名] 网络中设备的标识 本地回环地址:127.0.0.1 主机名:localhost 端口号 用于标识进程的逻辑地址 有效端口:0~65535 其 ...

  7. Socket网络编程--FTP客户端

    Socket网络编程--FTP客户端(1)(Windows) 已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解F ...

  8. windows下的socket网络编程

    windows下的socket网络编程 windows下的socket网络编程 clinet.c 客户端 server.c 服务器端 UDP通信的实现 代码如下 已经很久没有在windows下编程了, ...

  9. windows下的socket网络编程(入门级)

    windows下的socket网络编程 clinet.c 客户端 server.c 服务器端 UDP通信的实现 代码如下 已经很久没有在windows下编程了,这次因为需要做一个跨平台的网络程序,就先 ...

  10. Java Socket 网络编程心跳设计概念

    Java Socket 网络编程心跳设计概念   1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...

随机推荐

  1. Mybatis多表查询(一对一、一对多、多对多)

    Mybatis的多表级联查询 . 一对一可以通过<association>实现,一对多和多对多通过<collection>实现. <discriminator> 元 ...

  2. 73. Set Matrix Zeroes (Array)

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Follow ...

  3. rtx自定义面板不更新

    服务器和客户端自定义面的文件分别在下列xml中. 程序员的基础教程:菜鸟程序员

  4. sql添加/移除约束

    唯一:ALTER TABLE TableName ADD CONSTRAINT UQ_NickName UNIQUE(NickName) 主键:ALTER TABLE TableName ADD CO ...

  5. Warning: Data truncated for column 'xxxx' at row 1

    The problem was that I changed the column's length only in the program.I had to do either change the ...

  6. Java 设计模式系列(一)单例模式

    Java 设计模式系列(一)单例模式 保证一个类只有一个实例,并且提供一个访可该实例的全局访问点. 一.懒汉式单例 /** * 懒汉式单例类:在第一次调用的时候实例化自己 * 1. 构造器私有化,避免 ...

  7. DB2日期转格式化字符串

    DB2  应该有个  TO_CHAR  的函数. 用来把 日期 转换为 字符串 1 2 3 4 5 6 7 8 9 10 db2 => SELECT db2 (cont.) =>   TO ...

  8. HDU 6065 RXD, tree and sequence (LCA+DP)

    题意:给定上一棵树和一个排列,然后问你把这个排列分成m个连续的部分,每个部分的大小的是两两相邻的LCA的最小深度,问你最小是多少. 析:首先这个肯定是DP,然后每个部分其实就是里面最小的那个LCA的深 ...

  9. OpenCV的配置

    系统配置:win7 64位系统,编译器 vs2013 一.下载OpenCV安装包(版本2.4.13) https://excellmedia.dl.sourceforge.net/project/op ...

  10. Google Tango service outdated谷歌Tango的服务过时了

    If you device showed "tango service outdated." It means that your Tango Core need to be up ...