首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
ci
多线程
upload
token
package
port
php5
分布式
router
ruby
uuid
ssl
c语言
上传
cookies
ftp
rust
cache
wordpress
lua
thinkphp
golang
php框架
pdo
pip
server
varnish
织梦cms
swoole
微服务
http
phpunit
queue
frontend
python
gcc
timezone
syslog
正则
interface
django
static
lavarel
压力测试
sftp
timeout
漏洞
webserver
caching
java
protocol-buffers
transform
touch
并发
pipe
sockets
ffmpeg
storage
gzip
webhooks
mvc
spring
memcache
phpmyadmin
jvm
vb
api
tengine
go
注入
makefile
openssl
web3
asp.net
node.js
laravel
crontab
cron
localhost
当前位置:
开发笔记
>
后端
> 正文
linux网络编程
作者:零夏一夜_335 | 来源:互联网 | 2017-07-06 19:03
linux网络编程--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
/**
* a sample server
*/
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 8888
#define BACKLOG 2
void process_conn_server(int sock);
int main(int argc, char **argv)
{
int sSock, cSock;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int err;
pid_t pid;
sSock = socket(AF_INET, SOCK_STREAM, 0); //创建一个TCP套接字
if(-1 == sSock)
{
printf("Create socket error");
return -1;
}
bzero(&server_addr, sizeof(server_addr)); //初始化地址空间
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(PORT);
err = bind(sSock, (struct sockaddr*)&server_addr, sizeof(server_addr));
if(err <0)
{
printf("bind error");
return -1;
}
printf("Bind program is right,it return %d\n",err);
err = listen(sSock, BACKLOG);
if(err <0)
{
printf("listen error");
return -1;
}
printf("Listen program is right,it return %d\n",err);
for( ; ; )
{
// int addrlen = sizeof(struct sockaddr);
socklen_t addrlen = sizeof(struct sockaddr);
cSock = accept(sSock, (struct sockaddr*)&client_addr, &addrlen);
perror("The state is:");
pid = fork();
if(pid <0)
{
printf("can't create new pid");
return -1;
}
if(pid == 0)
{
close(sSock);
process_conn_server(cSock);
exit(0);
}
else
close(cSock);
}
// return 0;
}
void process_conn_server(int sock)
{
ssize_t size = 0;
char buffer[1024];
char sendbuffer[25] = "Welcome to this server\n";
write(sock, sendbuffer, 25 );
for( ; ; )
{
size = read(sock, buffer, 1024); //当读到的字节位0,即发送方停止发送,就会返回
if(size == 0)
return;
// sprintf(buffer, "%d bytes altogether\n", (int)size);
write(sock, buffer, strlen(buffer) +1 );
write(STDOUT_FILENO, buffer, strlen(buffer) +1 );
}
}
/*
* client.c
* a sample client for server
*/
#include
//#include
#include
#include
//#include
//#include
#include
#include
#include
#define PORT 8888
void process_conn_client(int s);
int main(int argc, char *argv[])
{
int s;
if(argc != 2 )
{
printf("client
\n");
return -1;
}
struct sockaddr_in server_addr;
s = socket(AF_INET, SOCK_STREAM, 0);
if(s <0)
{
printf("failed to creating socket");
return -1;
}
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
inet_pton(AF_INET, argv[1], &server_addr.sin_addr);
int cnum = connect(s, (struct sockaddr*)&server_addr, sizeof(struct sockaddr)); //成功则返回0,否则为-1
if(cnum <0)
{
printf("can't find the servers\n");
return 0;
}
process_conn_client(s);
exit(0);
}
void process_conn_client(int s)
{
ssize_t size = 0;
char buffer[1024];
char recvbuffer[25];
read(s, recvbuffer, 25 );
write(STDOUT_FILENO, recvbuffer, strlen(recvbuffer) +1 );
for( ; ; )
{
//buffer[1024] = {''};
size = read(0, buffer, 1024); //将标准输入读到buffer中,此处,要有个初始化
if(size > 0)
write(s, buffer, strlen(buffer) +1 );
// printf(buffer);
write(STDOUT_FILENO, buffer, strlen(buffer) +1 );
}
}
服务端和客户端代码如上所示,当两者建立连接后,客户端断开,本来应该是4次分手的,但是我用wireshark抓包,却只抓到三个,向大家求解啊!
vb
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
vb
Linux环境变量$PATH的作用及使用方法
本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ...
[详细]
蜡笔小新 2023-12-10 15:26:56
vb
Windows7企业版怎样存储安全新功能详解
本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ...
[详细]
蜡笔小新 2023-12-10 14:45:37
多线程
包含vb.net同时运行的词条
vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ...
[详细]
蜡笔小新 2023-10-17 18:18:35
多线程
Opencv Python版学习笔记(八)字符识别-分类器(SVM,KNearest,RTrees,Boost,MLP)
Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ...
[详细]
蜡笔小新 2023-10-17 17:02:44
多线程
VBA操作Excel之设置单元格属性
VBA操作Excel简介一、VBA读写Excel文件二、VBA设置单元格属性三、VBA弹出输入和输出窗口参考文档一、VBA读写Excel文件VBA简介及打开Excel文件方法见VB ...
[详细]
蜡笔小新 2023-10-17 16:48:53
多线程
[急!] c#如何直接操作ppt的图表数据,winfrom下mschart图表如何倒入到excel或ppt中
如题如示,在网上查了下c#直接操作ppt的例子,但都只是很简单的写了下打开PPT插入标题插入一个图表等,但是都没有更具体的有如何可以直接更改PPT图表的数据源数据的例子。我现在的需求是,我有一个P ...
[详细]
蜡笔小新 2023-10-17 15:43:42
ci
vb6集成ad登录共享文件_SCSP实验2单点登录
01—实验目的掌握单点登陆相关原理和深信服配置02—实验环境1.AC版本v12.0.42AC1地址:https:172.172.1.1AC2地址:htt ...
[详细]
蜡笔小新 2023-10-17 15:23:51
ci
excel/origin pro/sigma plot里面怎么画一个x(自然数序列),多个y
M$exceloriginprosigmaplot里面怎么画一个x(自然数序列),多个y比如10个y数据曲线,要求所有曲线都不能重叠的,但是x轴只要一个。因为在文章里面给图的位置很小,但是 ...
[详细]
蜡笔小新 2023-10-17 14:55:17
ci
vb.net模拟题,vb考试题
vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ...
[详细]
蜡笔小新 2023-10-17 12:43:37
ci
quartus管脚分配后需要保存吗_嵌入式必须会的一些硬件面试题,要试一试吗?你过来呀!...
1、下面是一些基本的数字电路知识问题,请简要回答之。(1)什么是Setup和Hold时间?答:SetupHoldTime用于测试芯片对输入 ...
[详细]
蜡笔小新 2023-10-17 12:35:28
server
asp.netvb脚本,aspnet vb
asp.net(vb脚本)如何获取xml的节点值?xmlversion1.0encodingutf-8?rootimageimagemenusmenuurl#frame_paren ...
[详细]
蜡笔小新 2023-10-17 12:13:19
server
Ace引擎和Jet引擎读取Excel
http:www.cnblogs.compirloarchive200909091563368.html以前操作Excel的话,一般都会去用Microsoft.Jet.OLEDB.4. ...
[详细]
蜡笔小新 2023-10-17 12:04:38
server
【Python 爬虫】破解按照顺序点击验证码(非自动化浏览器)
#请求到验证码base64编码json_img_datajson_raw.get(Vimage)#获取到验证码编码 #保存验证码图片到本地defbase64_to_img(bstr ...
[详细]
蜡笔小新 2023-10-17 11:36:05
port
vb.net打印报表,vb 打印
我的vb.net中没有CrystalReport控件怎么打印报表啊?不会吧,在vb.net工程中,选择新项目的追加,在实用程序的选项中,可看到有CrystalReport的选项。它 ...
[详细]
蜡笔小新 2023-10-17 10:53:47
port
在高优先级下运行应用程序
你是否注意到,当你在高优先级下运行应用程序是,应用程序运行得特别快(这也视你运行什么样的应用程序而定)。拿WinRar做例子 ...
[详细]
蜡笔小新 2023-10-16 23:39:59
零夏一夜_335
这个家伙很懒,什么也没留下!
Tags | 热门标签
ci
多线程
upload
token
package
port
php5
分布式
router
ruby
uuid
ssl
c语言
上传
cookies
ftp
rust
cache
wordpress
lua
thinkphp
golang
php框架
pdo
pip
server
varnish
织梦cms
swoole
微服务
RankList | 热门文章
1
获取泛型的class_jackson解析泛型的正确写法
2
java面试常考_Java面试常考知识点
3
bool类型0和1真假_(四) 数据类型之一
4
注意力汇聚:NadarayaWatson 核回归
5
行业动态Thread Group 和 DiiA 携手打造商用建筑物联网照明的未来
6
华硕OEM win7家庭版64位升级旗舰版key
7
AMD Ryzen安装Win7系统方法是什么?
8
CSS3 表单
9
运用 embersimpleauth 完成 Ember.js 运用的权限掌握
10
第17章 内存映射文件(2)_内存映射文件的3个主要用途
11
ofbiz mysql 序列_如何将OFBIZ(opentaps)默认数据库迁移至mysql
12
本文讲解如何在Linux CentOS下部署Java Web项目的步骤
13
C#基础 引用类型 和 值类型
14
babel 处理 node_modules 文件
15
Python 特殊函数(filter, map, reduce等)
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有