Centos socket TCP代码
一、功能描述:
能够在Centos中创建TCP socket,实现Client给Server发送消息,Server能够Client发送消息。
二、代码如下:
①client代码:
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
int main()
{
int sockfd ; //socket标示
struct sockaddr_in serverAddr; //socket信息结构体
serverAddr.sin_family = AF_INET; //domain
serverAddr.sin_port = htons(6666); //server port
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //server IP
if((sockfd=socket(AF_INET,SOCK_STREAM,0))< 0){ //socket()
printf("socket ERR!\n");
return -1;
}
if( connect(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1){ //connect()
printf("connect error: (errno: )\n");
return -1;
}
if(send(sockfd,"Sending string,logo_fox",strlen("Sending string,logo_fox"),0)<0){ //send()
printf("send ERR!\n");
return -1;
} close(sockfd);
return -1;
}
②server代码:
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <errno.h>
int main(int argc ,char ** argv)
{
int sockfd, newfd; //sockfd: socket标示 ,newfd:accept标示
struct sockaddr_in serveraddr; //socket信息结构体
char buf[4096]; //数据缓存区
int n; //接收到的信息位数
serveraddr.sin_family=AF_INET; //socket domain
serveraddr.sin_port = htons(6666); //socket port
serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); //socket IP info
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){ //socket()
printf("Socket ERR!\n");
return -1;
}
if(bind(sockfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr))<0){ //bind()
printf("Bind ERR!%s(errno:%d)\n",strerror(errno),errno);
return -1;
}
if(listen(sockfd,4)<0){ //listen()
printf("Listen ERR!\n");
return -1;
}
while(1){
if((newfd=accept(sockfd,(struct sockaddr *)NULL,NULL))<0){ //accept()
printf("accept ERR!\n");
return -1;
}
n = recv(newfd,buf,4096,0); //recv()
printf("n:%d\n",n);
buf[n]='\n'; //将接收到的信息变为字符串
printf("recv msg from client is :%s\n",buf);
close(newfd); //关闭accept
}
close(sockfd); //关闭Socket
}
三、socket通讯流程
Centos socket TCP代码的更多相关文章
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...
- 基于.NET Socket Tcp的发布-订阅框架
基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...
- 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为
初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...
- socket tcp缓冲区大小的默认值、最大值
Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.cs ...
- 使用Beetle简单构建高性能Socket tcp应用
beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列.除了 ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
- 通用异步 Windows Socket TCP 客户端组件的设计与实现
编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择.但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱 ...
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...
随机推荐
- 几个简单常用的Sql语句
'; --查Cids为2的Gnumber列的和,列名为Ids select Cids,Plevel from People; select * from Salary; select * from S ...
- Eclipse:构造函数不提示才发现
用Eclipse快一年了,今天才发现,原来按下 Alt+? 就可以显示构造函数中的参数. 想一想这一年都不知道是怎么过的,遇到构造函数时,郁闷啊... 2007-11-01
- SQL语句中 int 溢出 + Asp语句中 Long 溢出
晚上5点多,同事在QQ告诉我,一个用户向他反应,在他登录的时候显示错误信息,我们在管理平台查看该用户的基本信息时,也显示错误信息. 经过初步分析,原来是在执行 SQL语句的时候发生Int溢出: sql ...
- centos7部署posgresql和kong总结
之前在macos系统测试安装psql和kong,但是实际环境中,大部分是部署在linux服务器上.下面记录了在centos7上部署postgresql和kong的总结以及遇到的一些问题的解决. 查看c ...
- R语言:随机抽样(sample函数)
如果想从一堆数据集中随机抽出一个数,用sample函数就能实现,代码展示如下: forehead<-c(249,189,128,111,184,233,313,120,151,196,135,1 ...
- SIFT特征点检测学习一(转载)
新手上路,先转载学习tornadomeet的博客:http://www.cnblogs.com/tornadomeet/archive/2012/08/16/2643168.html 特征点检测学习_ ...
- MySQL命令 导出 数据和结构
网上的真是仅供参考,啥也不想说. //先找到mysqldump的目录 //Centos7中位于 /usr/bin 中 然后执行命令: cd /user/bin mysqldump -u [用户名] - ...
- 关闭应用程序(主程序)(WPF)
很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是 ...
- JVM调优命令-jstack
jstack jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁 ...
- Exception异常转String【转】
把异常的栈轨迹以String形式返回 /** * 把异常的栈轨迹以String形式返回,而不是直接打印到console * @author King * @time 2015-04-29 * @ret ...