【网络编程】——linux socket demo
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h> #if 0
#define UDP
#else
#define TCP
#endif int sockfd;
char* IP = "10.8.2.60";
//char *IP = "127.0.0.1";
#ifdef UDP
short PORT = ;
#endif
#ifdef TCP
short PORT = ;
#endif
typedef struct sockaddr SA; void init(){
#ifdef UDP
sockfd = socket(AF_INET, SOCK_DGRAM, );
#endif #ifdef TCP
sockfd = socket(AF_INET, SOCK_STREAM, );
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(IP);
if(connect(sockfd, (SA*)&addr, sizeof(addr)) == -){
printf("connect failed!\n");
exit(-);
}
#endif
} int main (int argc, char *argv[]) {
//char buf[2048];
char buf[];
int index, i = ; if (argc == ) {
index = atoi(argv[]);
} else {
printf("Usage: ./client <times>\n");
return -;
} printf("start init ....\n");
init();
printf("connected...\n");
memset(buf, , sizeof(buf));
#ifdef UDP
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(IP);
#endif while () {
//printf("please input something:\n");
//scanf("%s", buf);
//puts(buf);
if (i == index)
break;
#ifdef TCP
send(sockfd, buf, sizeof(buf), );
printf("send 2048! index:%d\n", i);
#endif
#ifdef UDP
printf("sendto 2048! index:%d\n", i);
if (sendto(sockfd, buf, sizeof(buf), , (struct sockaddr *)&addr, sizeof(struct sockaddr)) == -){
printf("sendto error!\n");
return -;
}
#endif
//sleep(1);
i++;
} close(sockfd); return ;
}
client。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h> int sockfd;
char* IP = "10.8.2.56";
//char *IP = "127.0.0.1";
typedef struct sockaddr SA; #if 0
#define UDP
#else
#define TCP
#endif
#ifdef UDP
short PORT = ;
#else
short PORT = ;
#endif void init(){
#ifdef TCP
sockfd = socket(AF_INET, SOCK_STREAM, ); //tcp
#endif
#ifdef UDP
sockfd = socket(AF_INET, SOCK_DGRAM, ); //udp
#endif
if(sockfd == -){
printf("socket failed!\n");
exit(-);
} struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(IP);
if(bind(sockfd, (SA *)&addr, sizeof(addr)) == -) {
printf("bind failed!\n");
exit(-);
}
#ifdef TCP
if(listen(sockfd, ) == -) {
printf("listen failed!\n");
exit(-);
}
#endif
} int main (int argc, char *argv[]) {
int fd;
int ret;
char buf[];
int index = ;
init(); while () {
#ifdef TCP
struct sockaddr_in fromaddr;
socklen_t len = sizeof(fromaddr);
fd = accept(sockfd, (SA *)&fromaddr, &len);
if (fd < ) {
printf("accept failed!\n");
continue;
}
printf("fd:%d\n", fd);
#endif
memset(buf, , sizeof(buf));
while () {
#ifdef TCP
if ((ret = recv(fd, buf, sizeof(buf), MSG_WAITALL)) > ) {
#endif
#ifdef UDP
printf("udp!\n");
if ((ret = recvfrom(sockfd, buf, sizeof(buf), MSG_WAITALL, NULL, NULL)) > ) {
#endif
printf("ret %d\n", ret);
} else {
printf("recvfrom failed! ret:%d\n", ret);
break;
}
printf("index:%d\n", index);
index++;
}
} return ;
}
server。
【网络编程】——linux socket demo的更多相关文章
- Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)
在学习Linux高并发网络编程开发总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-Linux系统编程-第10天(网络编程基础-socket) 在学习Li ...
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- python 网络编程:socket(二)
上节地址:Python网络编程:socket 一.send和sendall区别 send,sendall ret = send('safagsgdsegsdgew') #send 发送 ...
- 网络编程与socket套接字
网络编程与socket套接字 传输层 PORT协议 port是一种接口,数据通过它在计算机和其他设备(比如打印机,鼠标,键盘或监视器)之间,网络之间和其他直接连接的计算机之间传递 TCP协议 传输 ...
- linux网络编程-(socket套接字编程UDP传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
- python 网络编程:socket
在学习socket之前,我们先复习下相关的网络知识. OSI七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.OSI七层模型是由国际标准化组织ISO定义的网络的基本结构,不仅包括一 ...
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- Python之网络编程(Socket)
1.网络通信原理与互联网协议 详见:https://www.cnblogs.com/JackLi07/p/9218039.html 2.socket层 以上是tcp/ip五层协议的结构图,我们没有看到 ...
- 02网络编程( socket套接字+TCP粘包 )
目录 02 网络编程 一.socket套接字编程 二.简易代码模板 2.1 服务端 2.2 客户端 三.通信循环及代码优化 四.黏包现象 五.struct模块 六.简易版本报头 七.上传文件数据 * ...
- iOS 网络编程:socket
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
随机推荐
- 关于mysql占用CPU过高,问题解决
使用SHOW PROCESSLIST 查看 原因: 使用了 一个触发器 不断的去删除日志,保证每个用户的日志只有10条 去掉之后,CPU使用率从97% 降到了 %. 利用show columns fr ...
- Android--广播机制
1.Android中广播分为两种类型: 1)标准广播:完全异步执行的广播,在广播发出后,所有的广播接收器几乎会在同一时刻接收到,它们之间没有顺序可言,效率高,不可截断: 2)有序广播:同步执行的广播, ...
- 解决nginx反向代理缓存不起作用的问题
昨天尝试用nginx搭建nuget镜像服务器,镜像服务器需要两个功能:1)反向代理:2)内容缓存. 用nginx做反向代理,配置非常简单,只需在/etc/nginx/nginx.conf中添加一个包含 ...
- [Microsoft Test Manager]CodeUI初探
开发环境: Widnows8 Microsoft Visual Studio Ultimate 2012 1. 新建一个 Windows Forms Application Figue1 Cr ...
- .NET面试题大全,包括微软、华为、中兴等大企业的面试真题
简要地写出一个.NET Remoting的示例 [考点].NET Remoting程序的原理,.NET Remoting的基本编写方法.[出现频率]★★☆☆☆[解答]在VS 2008中添加新的类库项目 ...
- [异常] Download interrupted: Connection to https://dl-ssl.google.com refused 安卓SDK下载被拒 3步解决
1.SDK Manager 的 Tools ->Options打开SDK Manager的Settings,选中“Force https://… sources to be fetched us ...
- Linux:软件安装
Linux 上的软件安装 四种安装方式 在线安装 从磁盘安装盘deb软件包 从二进制软件包安装 从源代码编译安装 在线安装 在不同的linux发行版上面在线安装方式会有一些差异包括使用的命令及它们的包 ...
- JS 数字转换为大写金额
function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "数据非法"; var unit = "千百 ...
- paip.gui控件tabs控件加载内容的原理以及easyui最佳实现
paip.gui控件tabs控件加载内容的原理以及easyui最佳实现 //////////////tabs控件的加载 同form窗体一样,俩个方式 两个方式:一个是url,简单的文本可以使用这个,不 ...
- paip.Java Annotation注解的作用and 使用
paip.Java Annotation注解的作用and 使用 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog. ...