C++后台编程一、socket通信
来源:互联网 发布:域名分级 编辑:程序博客网 时间:2024/06/12 21:51
C++后台编程一、socket通信
最近要写一些计算机网络的一些实验,所以最近写一些Linux平台下的后台编程,使用C++语言编写。
没有了Windows下的IDE,所以用的是记事本编写cpp文件,@=@.
主要写了两个cpp文件,一个server,另一个client,先上代码,有时间再讲解代码的意思。
server.cpp
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<netinet/in.h>#include<unistd.h>#define MAXLINE 4096int main(int argc, char** argv){ int listenfd, connfd; struct sockaddr_in servaddr; char buff[4096]; int n; if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ printf("create socket error:%s(errno:%d)\n", strerror(errno), errno); return 0; } memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666); if(bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){ printf("bind socket error:%s(errno:%d)\n", strerror(errno), errno); return 0; } if(listen(listenfd, 10) == -1){ printf("listen socket error:%s(errno:%d)\n",strerror(errno), errno); return 0; } printf("======waiting for client's request======\n"); while(1){ if((connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1){ printf("accept socket error:%s(errno:%d)", strerror(errno), errno); continue; } n = recv(connfd, buff, MAXLINE, 0); buff[n] = '\n'; printf("recv msg from client:%s\n",buff); close(connfd); } close(listenfd); return 0;}
client.cpp
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#define MAXLINE 4096int main(int argc, char** argv){ int sockfd, n; char recvline[4096], sendline[4096]; struct sockaddr_in servaddr; if(argc != 2){ printf("usage:./client <ipaddress>\n"); return 0; } if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ printf("create socket error:%s(errno:%d)\n", strerror(errno), errno); return 0; } memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(6666); if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){ printf("inet_pton error for %s\n", argv[1]); return 0; } if(connect(sockfd, (struct sockaddr*) &servaddr, sizeof(servaddr)) < 0){ printf("connect error:%s(errno:%d)", strerror(errno), errno); return 0; } printf("send msg to server:\n"); fgets(sendline, 4096, stdin); if(send(sockfd, sendline, strlen(sendline), 0) < 0){ printf("send msg error:%s(errno:%d)\n", strerror(errno), errno); return 0; } close(sockfd); return 0;}
写完这两个cpp文件后需要用g++编译,所以下一个Makefile文件,内容如下
all:server clientserver:server.o g++ -g -o server server.oclient:client.o g++ -g -o client client.oserver.o:server.cpp g++ -g -c server.cppclient.o:client.cpp g++ -g -c client.cppclean:all rm all
注意: Makefile中前边不是空格,是tab键,否则会报错@=@
在命令行下执行Makefile文件,你会发现生成了四个文件,分别为server.o、client.o、以及server、client可执行文件。
然后打开两个终端,一个终端输入
./server
另一个终端输入
./client 127.0.0.1
在客户端发送消息,服务端会收到消息,非常简陋。@+@
阅读全文
0 0
- C++后台编程一、socket通信
- socket编程 与c通信
- c#socket通信(一)
- android中的网络通信(一) socket编程
- C语言socket编程----实现TCP通信
- linux下c编程socket通信
- C-socket编程-客户端服务端通信模型
- c#Socket通信(一)实例复习
- flex跟后台socket通信
- 嵌入式linux下socket网络通信编程实例一
- Java网络编程之Socket通信(一)
- linux socket 编程一:简单的服务器和客户端通信
- Socket通信编程基础__实例一__server端
- socket编程(一)使用SOCK_STREAM建立可靠通信
- JavaSE入门学习47:Socket网络通信编程(一)
- JavaSE入门学习47:Socket网络通信编程(一)
- Java网络通信学习(一)- Java Socket 编程
- socket编程(一),实现服务器与客户端简单通信
- 【编程题】字符串编码
- JAVA数据类型
- java的类型
- 兔子跳跃之谜下(BZOJ2454 RabbitPuzzle(BZOJ中不是多组数据))
- 斯坦福:机器学习CS229:Exercise 1: Linear Regression线性回归(答案1)
- C++后台编程一、socket通信
- 单例模式
- BootStrap学习手册
- Android笔记三(Handler)
- NC开发笔记——NC65+UAP65成长笔记
- JACOCO的坑
- JAVA数据类型
- c++实验6-数组合并
- 点云可视化方法——PCLVisualizer