【网络编程】——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 ...
随机推荐
- asp.net 禁用按钮防止重复提交
按钮设置 1.OnClientClick属性为”this.disabled=true;“ 2.UseSubmitBehavior属性为”false“ 举例如下: <asp:Button ID=& ...
- 设计模式UML类图基础
1.聚合 聚合(aggregation)表示一种弱的"拥有"关系,体现的是A对象可以包含B对象,但是B对象不是A对象的一部分.如大雁是群居动物,每只大雁都属于一个雁群,一个雁群可以 ...
- line-height,vertical-align及图片居中对齐问题根源解析
关于图片居中对齐的问题,进入前端行业虽然有一段时间了,以为自己懂了,可是实际上还是一知半解,找了一些博客来看了一下,但是感觉讲的有点碎,看完还是一知半解. 查阅了一下<css权威指南>,结 ...
- Shiro-多Realm验证
1.多Realm验证 存在这样一种场景,同一个密码可能在MqSQL中存储,也可能在Oracle中存储,有可能MqSQL中使用的是MD5加密算法,而Oracle使用SHA1加密算法.这就需要有多个Rea ...
- 基于Qt的流程设计器(一)
一: 先来看一下界面的截图: 说明: 拖动节点的时候,与该节点相关的箭头连线也会跟着调整: 用户可以使用鼠标从一个节点拖出一个箭头到另一个节点(鼠标在空白区域点击一下,拖出的箭头消失) 这三个 ...
- 安卓-PC-Arduino3方通信实现
请仔细理解相关参数,如端口设置.IP设置.COM口设置......等等.....不要盲目COPY.....这涉及手机.电脑和一个单片机,其中一台电脑作为服务器并与单片机相连,负责通过网络与客户端通信( ...
- mvc项目问题清单以及解决方法
项目开发中遇到的一些问题以及解决方法. 1. 脚本相关 mvc中RemoteAttribute使用,在IE浏览器下面会将结果缓存起来(304).因为IE浏览器判断Url的链接参数都没有变化,所以直接返 ...
- CSS/JS图片鼠标悬浮一道光闪过
看到有些网站logo鼠标悬浮上面的时候,会出现一道光,一闪而过,刚开始以为是gif图,已审查, 居然不是:现在就实现在这种效果: 先看看CSS实现的效果图: 看到没,就是这道刺眼的白光.... 啊 ...
- paip.哈米架构CAO.txt
paip.哈米架构CAO.txt 智能语义搜索方法,建立了学习机,通过对用户点击情况的处理,对知识库进行及时更新,并将搜索结果根据关联度进行排序及重新排序,使用户能快速查询信息,从而能不断适应用户使用 ...
- paip . 解决spring No unique bean of type [com.mijie.homi.search.service.index.MoodUserIndexService]
paip . 解决spring No unique bean of type [com.mijie.homi.search.service.index.MoodUserIndexService] ...