1. Socket网络编程
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网络编程的更多相关文章
- Linux Socket 网络编程
Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...
- Python Socket 网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- Python全栈【Socket网络编程】
Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...
- python之Socket网络编程
什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...
- Python之路【第七篇】python基础 之socket网络编程
本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket 网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...
- Socket网络编程-基础篇
Socket网络编程 网络通讯三要素: IP地址[主机名] 网络中设备的标识 本地回环地址:127.0.0.1 主机名:localhost 端口号 用于标识进程的逻辑地址 有效端口:0~65535 其 ...
- Socket网络编程--FTP客户端
Socket网络编程--FTP客户端(1)(Windows) 已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解F ...
- windows下的socket网络编程
windows下的socket网络编程 windows下的socket网络编程 clinet.c 客户端 server.c 服务器端 UDP通信的实现 代码如下 已经很久没有在windows下编程了, ...
- windows下的socket网络编程(入门级)
windows下的socket网络编程 clinet.c 客户端 server.c 服务器端 UDP通信的实现 代码如下 已经很久没有在windows下编程了,这次因为需要做一个跨平台的网络程序,就先 ...
- Java Socket 网络编程心跳设计概念
Java Socket 网络编程心跳设计概念 1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...
随机推荐
- Android开发之百度地图的简单使用
越来越多的App运用到了定位,导航的这些功能,其实实现一个自己的百度地图也是非常的简单,这篇博客将会教你简单的实现一个百度地图.看一下效果图: 第一步:要使用百度地图,必须要有百度地图的Key,要获得 ...
- php性能优化学习笔记
编写代码 1.尽可能多的使用内置函数2.比对内置函数的时间复杂度,选择复杂度低的 比如 循环20万次-测试isset 和 array_key_exists 耗时 对比isset.php , array ...
- C/C++互相调用
参考: http://www.cnblogs.com/Yogurshine/p/3913073.html http://blog.chinaunix.net/uid-24118190-id-29853 ...
- php识别二维码
php-zbarcode 是 PHP 读取条形码的扩展模块,目前仅支持 php5.x
- Java 设计模式系列(一)单例模式
Java 设计模式系列(一)单例模式 保证一个类只有一个实例,并且提供一个访可该实例的全局访问点. 一.懒汉式单例 /** * 懒汉式单例类:在第一次调用的时候实例化自己 * 1. 构造器私有化,避免 ...
- 想成为一名成功的UX设计师吗?做好这13件事情吧
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 丢掉那些阻碍你前进的东西 每个人对成功的定义都不同.如果想在重要事情上取得成功,学会给予才是关键.只 ...
- Jdom的简单操作
http://blog.csdn.net/heirenheiren/article/details/7354108 http://www.cnblogs.com/hoojo/archive/2011/ ...
- 机器学习—K近邻
一.算法原理 还是图片格式~ 二.sklearn实现 import pandas as pd import numpy as np import matplotlib.pyplot as plt im ...
- 词频统计-part2
看到这个问题为之一愣,这简单多了,在第一部分的基础上把那些存储结构删了,把排序算法删了,设置一个变量,遇到则加一,直到读到文件尾.最后输出单词出现次数. 程序比较简单也比较,下面就把程序贴出来: pa ...
- nancyfx的安装笔记
这个安装时很简单的 只要 Install-Package Nancy.Hosting.Aspnet 就行了. 需要注意的是,千万不要用那个模板安装,通过创建nancyfx类型项目的方式安装是有问题的. ...