#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的更多相关文章

  1. Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)

    在学习Linux高并发网络编程开发总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-Linux系统编程-第10天(网络编程基础-socket) 在学习Li ...

  2. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

  3. python 网络编程:socket(二)

    上节地址:Python网络编程:socket 一.send和sendall区别 send,sendall         ret = send('safagsgdsegsdgew') #send 发送 ...

  4. 网络编程与socket套接字

    网络编程与socket套接字 传输层 PORT协议 port是一种接口,数据通过它在计算机和其他设备(比如打印机,鼠标,键盘或监视器)之间,网络之间和其他直接连接的计算机之间传递 TCP协议 ​ 传输 ...

  5. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  6. python 网络编程:socket

    在学习socket之前,我们先复习下相关的网络知识. OSI七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.OSI七层模型是由国际标准化组织ISO定义的网络的基本结构,不仅包括一 ...

  7. 浅谈TCP/IP网络编程中socket的行为

    我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...

  8. Python之网络编程(Socket)

    1.网络通信原理与互联网协议 详见:https://www.cnblogs.com/JackLi07/p/9218039.html 2.socket层 以上是tcp/ip五层协议的结构图,我们没有看到 ...

  9. 02网络编程( socket套接字+TCP粘包 )

    目录 02 网络编程 一.socket套接字编程 二.简易代码模板 2.1 服务端 2.2 客户端 三.通信循环及代码优化 四.黏包现象 五.struct模块 六.简易版本报头 七.上传文件数据 * ...

  10. iOS 网络编程:socket

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

随机推荐

  1. day5----正则

    %a    本地(locale)简化星期名称     %A    本地完整星期名称     %b    本地简化月份名称     %B    本地完整月份名称     %c    本地相应的日期和时间 ...

  2. 解決BufferedReader读取UTF-8文件中文乱码

    解決BufferedReader读取UTF-8文件中文乱码         File rst01 = new File(context.getRealPath("/")+" ...

  3. PHP类与继承

    <?php class Person { private $name; private $age; function __construct($name,$age){ $this->nam ...

  4. Unix时间戳与C# DateTime时间类型互换

    Unix时间戳最小单位是秒,开始时间为格林威治标准时间1970-01-01 00:00:00ConvertIntDateTime方法的基本思路是通过获取本地时区表示Unixk开始时间,加上Unix时间 ...

  5. Android View 如何绘制

    上文说道了Android如何测量,但是一个漂亮的控件我只知道您长到哪儿,这当然不行.只需要简单重写OnDraw方法,并在Canvas(画布)对象上调用那根五颜六色的画笔就能够画出这控件"性感 ...

  6. C#学习之Linq to Xml

    前言 我相信很多从事.NET开发的,在.NET 3.5之前操作XML会比较麻烦,但是在此之后出现了Linq to Xml,而今天的主人公就是Linq to Xml,废话不多说,直接进入主题. 题外:最 ...

  7. 微软BI 之SSIS 系列 - 2008 版本中变量 Int64 无法保存 bigint 类型数据的BUG

    开篇介绍 这是今天在帮别人看一个 2008R2 版本的项目时发现的一个 Bug,这个 Bug 在 SQL SERVER 2012 有的版本中可能已经解决,但在论坛上看到有的仍然存在. 在 SQL SE ...

  8. (译)开发优秀的虚拟现实体验:从开发I Expect You to Die中总结的六个要点

    这篇文章是我从网上找来的,我觉得他非常详细的解释了VR发展的需求和必要.我认为通过这篇文章可以让大家了解VR. 译者写在最前: 来到追光动画有好几个月了,抱歉这段时间也没有什么文章与大家分享,我现在在 ...

  9. Shell 判断

    1  shell 的$! ,$?, $$,$@ $n        $1 the first parameter,$2 the second... $#        The number of co ...

  10. [WinAPI] API 5 [遍历驱动器并获取驱动器属性]

    (1) GetLogicalDrives.获取主机中所有的逻辑驱动器,以BitMap的形式返回.◇返回值GetLogicalDrive函数返回一个DWORD类型的值,第一位表示所对应的驱动器是否存在. ...