Linux-Tcp-IP
/* tcpcli.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h> #define DEFAULT_PORT 8800 int main(int argc, char** argv)
{
int cPort = DEFAULT_PORT;
int cClient = ;
int cLen = ;
struct sockaddr_in cli;
char cbuf[] = {}; if(argc < )
{
printf("Uasge: client[server IP address]\n");
return -;
} memset(cbuf, , sizeof(cbuf)); cli.sin_family = AF_INET;
cli.sin_port = htons(cPort);
cli.sin_addr.s_addr = inet_addr(argv[]); cClient = socket(AF_INET, SOCK_STREAM, );
if(cClient < )
{
printf("socket() failure!\n");
return -;
} if(connect(cClient, (struct sockaddr*)&cli, sizeof(cli)) < )
{
printf("connect() failure!\n");
return -;
} cLen = recv(cClient, cbuf, sizeof(cbuf),);
if((cLen < )||(cLen == ))
{
printf("recv() failure!\n");
return -;
}
printf("recv() Data From Server: [%s]\n", cbuf); close(cClient); return ;
} //编译代码:gcc -o tcp_clt client_tcp.c //执行命令:./tcp_clt 192.168.0.230 //TCP scoket服务端程序代码 #include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include<sys/wait.h>
#include <string.h> /*********************************************************************
*filename: tcpserver.c
*purpose:tcp服务端程序
********************************************************************/
int main(int argc, char ** argv)
{
int sockfd,new_fd; /* 监听socket: sock_fd,数据传输socket: new_fd */
struct sockaddr_in my_addr; /* 本机地址信息 */
struct sockaddr_in their_addr; /* 客户地址信息 */
unsigned int sin_size, myport, lisnum; if(argv[]) myport = atoi(argv[]);
else myport = ; if(argv[]) lisnum = atoi(argv[]);
else lisnum = ; if ((sockfd = socket(PF_INET, SOCK_STREAM, )) == -) {
perror("socket");
exit();
}
printf("socket %d ok \n",myport); my_addr.sin_family=PF_INET;
my_addr.sin_port=htons(myport);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero), );
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -) {
perror("bind");
exit();
}
printf("bind ok \n"); if (listen(sockfd, lisnum) == -) {
perror("listen");
exit();
}
printf("listen ok \n"); /*
while(1) {
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) {
perror("accept");
continue;
} printf("server: got connection from %s\n",inet_ntoa(their_addr.sin_addr));
if (!fork()) { //子进程代码段
if (send(new_fd, "Hello, world!\n", 14, 0) == -1) {
perror("send");
close(new_fd);
exit(0);
}
}
close(new_fd); //父进程不再需要该socket
waitpid(-1,NULL,WNOHANG);//等待子进程结束,清除子进程所占用资源
}
*/ sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -) {
perror("accept");
exit();
}
printf("server: got connection from %s\n",inet_ntoa(their_addr.sin_addr)); int step = ;
while() {
char szSnd[] = {};
sprintf(szSnd,"i am server [%d]\n",step);
step++;
if (send(new_fd, szSnd, strlen(szSnd), ) == -) {
perror("send");
close(new_fd);
break;
} printf("send msg: %s \n",szSnd); sleep();
} exit();
}
} //编译指令:gcc -o tcp_srv tcpserver.c //执行服务器端程序:./tcp_srv //创建成功,绑定端口成功,监听成功后,循环发送i am server字符串。
Linux-Tcp-IP的更多相关文章
- [转]linux tcp/ip调优
LINUX tcp/ip性能调优 On 2011年03月15日, in linux, tips, by netoearth 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接 ...
- [转帖]Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点
Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点 http://network.51cto.com/art/201909/603780.htm 可以毫不夸张的说现如今的互联网是基于TC ...
- linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解
最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...
- [转] Linux TCP/IP网络小课堂:net-tools与iproute2大比较
PS:netstat选项是-planet,方便记忆 http://os.51cto.com/art/201409/450886.htm 如今许多系统管理员仍结合使用ifconfig.route.arp ...
- Linux TCP/IP 协议栈之 Socket 的实现分析(一)
内核版本:2.6.37参考[作者:kendo的文章(基于内涵版本2.6.12)] 第一部份 Socket套接字的创建 socket 并不是 TCP/IP协议的一部份. 从广义上来讲,socket 是U ...
- Linux TCP/IP调优-Linux内核参数注释
固定文件的内核参数 下列文件所在目录: /proc/sys/net/ipv4/ 名称 默认值 建议值 描述 tcpsyn_retries 5 1 对于一个新建连接,内核要发送多少个SYN连接请求才决定 ...
- Linux - TCP/IP网络协议基础
1.0 Tcp / IP 背景介绍 上世纪70年代,随着计算机的发展,人们意识到如果想要发挥计算机的更大作用,就要讲世界各地的计算机连接起来. 但是简单的连接时不够的,因为计算机之间无法沟通.因此设计 ...
- linux tcp/ip 参数解析
后面整理相关信息/* * TCP option lengths */#define TCPOLEN_MSS 4 //只能出现在SYN段中#define TCPOLEN_W ...
- Linux TCP/IP调优参数 /proc/sys/net/目录
所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...
- Linux TCP/IP parameters reference
This is a reference of IP networking parameters that are configurable as described in our linux twea ...
随机推荐
- 14周事情总结-机器人-大数据hadoop
14周随着考试的进行,其他该准备的事情也在并行的处理着,考试内容这里不赘述了 首先说下,关于机器人大赛的事情,受益颇多,机器人的制作需要机械和电控两方面 昨天参与舵机的测试,遇到的问题:舵机不动 排查 ...
- Android音频底层调试-基于tinyalsa
因为Android中默认并没有使用标准alsa,而是使用的是tinyalsa.所以就算基于命令行的測试也要使用libtinyalsa.Android系统在上层Audio千变万化的时候,能够能这些个工具 ...
- CentOS开发环境LAMP搭建
CentOS开发环境搭建 -------------------------------------------------------------------------准备工作---------- ...
- sharepoint 2013 更改搜索server组态
1.新搜索server在.安装sharepoint server 2013,并连接到一个现有的sharepoint server领域,完成后.您可以配置新的搜索server. 打开sharepoint ...
- Qt之QtScript(一)
C++和JavaScript相互通信.今天就学习QtScript模块吧. Qt 包含完全集成的 ECMA 标准脚本引擎.Qt Script 集成了 QObject,为脚本提供了 Qt 的信号与槽 (S ...
- C# - 系统类 - 系统接口
ICloneable接口 ns:System 此接口只定义了一个名为Clone的方法 该方法返回一个Object对象 表示调用该方法的对象的拷贝版 IComparable接口 ns:System 此接 ...
- Linux学习新篇——常用命令和快捷键总结
最近刚接触Linux,整理了一些常用的命令和快捷键 Tab补全命令 当命令记不清了,输入记得的前几个用Tab就可以将该命令自动补全. 启动tomcat服务用$startup.sh 停止tomcat服务 ...
- Socket.io 0.7 – Sending messages to individual clients
Note that this is just for Socket.io version 0.7, and possibly higher if they don’t change the API a ...
- elasticsearch学习一、安装和配置
原文链接:http://jingyan.baidu.com/article/48206aead42b53216bd6b372.html ElasticSearch是一个基于Lucene的搜索服务器.它 ...
- MySQL约束
MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息: 常用5种约束: not null: 非空约束,指定某列不为空 uni ...