例程:Linux下的socket演示程序1

server.cpp 是服务器端代码,client.cpp 是客户端代码。

要实现的功能是:客户端从服务器读取一个字符串并打印出来。

服务器端代码 server.cpp:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>int main(){//创建套接字int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//将套接字和IP、端口绑定struct sockaddr_in serv_addr;memset(&serv_addr, 0, sizeof(serv_addr));  //每个字节都用0填充serv_addr.sin_family = AF_INET;  //使用IPv4地址serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");  //具体的IP地址serv_addr.sin_port = htons(1234);  //端口bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));//进入监听状态,等待用户发起请求listen(serv_sock, 20);//接收客户端请求struct sockaddr_in clnt_addr;socklen_t clnt_addr_size = sizeof(clnt_addr);int clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);//向客户端发送数据char str[] = "http://c.biancheng.net/socket/";write(clnt_sock, str, sizeof(str));//关闭套接字close(clnt_sock);close(serv_sock);return 0;
}

客户端代码 client.cpp:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>int main(){//创建套接字int sock = socket(AF_INET, SOCK_STREAM, 0);//向服务器(特定的IP和端口)发起请求struct sockaddr_in serv_addr;memset(&serv_addr, 0, sizeof(serv_addr));  //每个字节都用0填充serv_addr.sin_family = AF_INET;  //使用IPv4地址serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");  //具体的IP地址serv_addr.sin_port = htons(1234);  //端口connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));//读取服务器传回的数据char buffer[40];read(sock, buffer, sizeof(buffer)-1);printf("Message form server: %s\n", buffer);//关闭套接字close(sock);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Atom中运行脚本

2019独角兽企业重金招聘Python工程师标准>>> 现在可以在atom官网&#xff08;https://atom.io/&#xff09;找到deb包。 插件script可以让atom运行脚本&#xff0c;具体请见&#xff1a;https://atom.io/packages/script。 下面大致讲一下如何使用。 安装atom后&…

例程:socket编程实现文件传输功能

程序要实现的功能&#xff1a;client 从 server 下载一个文件并保存到本地。 编写这个程序需要注意两个问题&#xff1a; &#xff08;1&#xff09;文件大小不确定 有可能比缓冲区大很多&#xff0c;调用一次 write()/send() 函数不能完成文件内容的发送。接收数据时也会遇…

js中的this

在面向对象编程语言中&#xff0c;对于this关键字我们是非常熟悉的。比如C、C#和Java等都提供了这个关键字&#xff0c;虽然在开始学习的时候觉得比较难&#xff0c;但只要理解了&#xff0c;用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字&#xff0c;不过用…

在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像

&#xfeff;&#xfeff;发布于 2014-12-11作者 陈阳FreeBSD 基础镜像现已登陆中国的 VM Depot&#xff01; 对于青睐 BSD 而非 Linux 的开源爱好者来说&#xff0c;这无疑是个好消息。同时&#xff0c;随着该基础镜像的可用&#xff0c;我们期待很快看到更多来自社区的基于 F…

man命令:查找linux命令、API或者C库函数

可以使用man命令。 man 1 xxx 1表示查找linux命令&#xff0c;比如 man 1 ls man 2 xxx 2表示查找linux API &#xff0c;比如 man 2 socket man 3 xxx 3表示查找C库函数&#xff0c;比如 man 3 print

关于在asp.net中播放MP4格式的视频(好吧,只兼容支持html5的浏览器,ie8及以下的都歇菜了)...

项目要求只能播放MP4格式的视频&#xff0c;同事的播放器在我这里不完全管用&#xff0c;对于部分mp4格式的视频编码不支持&#xff0c;所以各种在网上找&#xff0c;在http://www.iteye.com/problems/75503问答的一个网友答案中找到了适合项目中当前mp4格式的播放器&#xff0…

如何理解套接字的形容词前缀:“面向连接”与“无连接”

以下内容源于C语言中文网资料的学习与整理&#xff0c;非本人原创&#xff0c;如有侵权请告知删除。 前言 在《网络套接字socket的简介》一文中提到&#xff0c;流格式套接字&#xff08;Stream Sockets&#xff09;就是“面向连接的套接字”&#xff0c;它基于 TCP 协议&…

1682: [Usaco2005 Mar]Out of Hay 干草危机

1682: [Usaco2005 Mar]Out of Hay 干草危机 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 391 Solved: 258[Submit][Status]Description The cows have run out of hay, a horrible event that must be remedied immediately. Bessie intends to visit the other farms to …

文件IO——Linux系统如何管理文件

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 硬盘中的静态文件 文件平时以一种固定的形式存放在硬盘中&#xff0c;我们叫它静态文件。 一块硬盘中可以分为两大区域&#xff1a;一个是硬盘内容管理表&#xff0c;另一个是真正存储内容的区域。 …

oracle存储过程 --1

一&#xff0c;oracle存储过程语法 1.oracle存储过程结构 CREATE OR REPLACE PROCEDURE oracle存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :0; 变量2 DATE; BEGIN END oracle存储过程名字 2.无返回值的oracle存储过程 create or replac…

RHEL/CentOS下编译安装Nginx

##下载nginx源码&#xff1a;wget http://nginx.org/download/nginx-1.7.8.tar.gz tar -xv -f nginx-1.7.8.tar.gz -C /usr/local/src/##安装编译环境和必须的组件&#xff1a;yum groupinstall Development Tools yum install pcre pcre-devel zlib zlib-devel openssl openss…

12.13记录//QQDemo示例程序源代码

笔记的完整版pdf文档下载地址: https://www.evernote.com/shard/s227/sh/ac692160-68c7-4149-83ea-0db5385e28b0/5742995e6034e3d3f5c4793465d50a8c 笔记的文本摘要如下所示: 注意:以下仅仅是文本摘要,没有贴图,出现右边的图标()表示笔记中此处有图片,完整笔记请前往pdf链接中观…

文件IO——文件IO的API

以下内容源于网络资源的学习与整理&#xff0c;如有侵权&#xff0c;请告知删除。 文件操作的一般步骤 在Linux系统中要操作一个文件&#xff0c;一般是先使用open函数打开文件&#xff0c;得到一个文件描述符&#xff0c;然后对文件进行读写操作&#xff08;或其他操作&#x…

【转】功能测试的经验总结

测试准备&#xff1a; 1、实际测试总比你预想的要花更多的时间&#xff0c;遇到更多的麻烦&#xff0c;所以要尽量争取足够的测试时间&#xff0c;不要不加思索的说这个东西我一星期肯定可以测完。还要尽可能考虑到测试过程中的风险&#xff0c;比如测试环境的问题、部署失败的…

文件IO——open函数的参数flags详解

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 在命令行中使用“man 2 open”可以获知open这个文件IO API的使用方法。 open函数的模型有两种&#xff0c;根据需要选择其中一种即可。 int open(const char *pathname, int flags); int open(…

oracle建库及plsql建表空间的用法

所有程序—》ORACLE-JHEMR-----------》配置和移植工具-----》DataBase Configuration Assistant-------中间就需要改一个数据仓库即可&#xff0c;其他的都是下一步&#xff0c;统一口令为**然后建监听服务&#xff0c;测试时改登录为system **&#xff0c;之后用plsql登录上&…

USACO 1.5.4 Checker Challenge

题意&#xff1a;经典的八皇后问题 解法&#xff1a; 采用朴素的每一次放置都与前面的所有行进行比较&#xff0c;在N 13的时候时间会爆掉 《入门经典》上提供的方法很经典&#xff0c;vis数组的使用&#xff0c;具体见《入门经典》125页 /* ID:lsswxr1 PROG:checker LANG:C */…

Spark 1.1.1 Submitting Applications

回到目录 Submitting Applications The spark-submit script in Spark’s bin directory is used to launch applications on a cluster. It can use all of Spark’s supported cluster managersthrough a uniform interface so you don’t have to configure your applicatio…

如何描述变量:存储类、生命周期,作用域、链接属性

可以根据一个变量的存储类、作用域、链接属性、生命周期来描述该变量。 其中&#xff0c;存储类决定了生命周期&#xff0c;作用域决定了链接属性。 存储类 存储类表明变量在哪里存储。见博文Linux下C语言程序的内存布局_天糊土的博客-CSDN博客 作用域 作用域表明变量起作用的…

mysql 修改表名的方法:sql语句

在使用mysql时&#xff0c;经常遇到表名不符合规范或标准&#xff0c;但是表里已经有大量的数据了&#xff0c;如何保留数据&#xff0c;只更改表名呢&#xff1f; 可以通过建一个相同的表结构的表&#xff0c;把原来的数据导入到新表中&#xff0c;但是这样视乎很麻烦。 能否简…