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 高性能服务端组件的设计与实现
设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...
随机推荐
- 【LOJ#10002】喷水装置
题目大意:给定一段区间 [l,r] ,N 条线段,求至少用多少条线段能够覆盖整个区间,不能覆盖输出-1. 题解:每次在起点小于当前位置的线段集合中选择有端点最大的位置作为下一个位置,并更新答案,如果当 ...
- Android: 待机时如何让程序继续运行 extends Service
接触Android没几天,不太了解. 本来写好的一个应用在无意中发现,待机的时候,应用中的一个线程停止了运行. 这个线程是每隔一分钟上传一个数据到服务器上. 我当时测试的时候,没想过待机(接开关键)下 ...
- Harbor镜像清理
目录 清理UI中的镜像 清理镜像释放空间 docker镜像仓库中镜像的清理,一直是个比较麻烦的事情.尤其是在测试环境当中,每天都会有大量的构建.由此会产生大量的历史镜像,而这些镜像,大多数都没有用. ...
- 1024. Palindromic Number (25)
A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...
- Jedis操作笔记 redis的五种存储类型
常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 String是最简单的类型,一个key对应一个val ...
- JS 中函数名后面加与不加括号的区别
a.onmouseover = fn1; a.onmouseout = fn2; function fn1(){ div.className = "erweima show"; } ...
- jquery 遍历 json【转】
jquery 遍历 json <HTML> <HEAD> <meta http-equiv="content-Type" content=" ...
- quartz定时任务-job
1,首先添加对quartz组建的引用 quartz-2.2.3.jar,slf4j-api-1.7.7.jar https://files.cnblogs.com/files/renjing/quar ...
- C# 反射实例
1.接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
传送门 要求断掉某些边使得两个点不连通,显然是最小割 但是要求选的边数尽量少,,, 可以考虑修改边权(容量),即把边权\(c\)改成\(c*(m+1)+1\) 没了 // luogu-judger-e ...