#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. static, readonly, const

    static Use the static modifier to declare a static member, which belongs to the type itself rather t ...

  2. SQLSERVER truncate table之后是否会重置表的自增值

    SQLSERVER truncate table之后是否会重置表的自增值 今天清理业务库数据的时候,开发人员说可以使用truncate table把两个表的所有数据清理掉 这两个表都有自增ID,都做了 ...

  3. 中文版Windows Server 2012 R2更改为英文显示语言

    1. 下载Windows Server 2012 R2多语言包(下载页面,直接下载链接). 2. 将win_svr_2012_r2_64bit_multi_language_lp_oem.img解压或 ...

  4. Html5前端框架

    BootCss bootcss.com amazeui http://amazeui.org/

  5. Spec 网上选课

    角色定义 管理员 管理员负责向系统中添加学生和教师的个人信息以及课程信息,实现对教师.学生和课程信息的修改.删除.查询操作,并对管理员个人密码进行修改. 学生 学生具有查看待选课程信息和任课教师信息. ...

  6. python time

    Python-time 计算程序运行时间 import time start = time.clock() time.sleep(5) end = time.clock() runtime = end ...

  7. [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示

    一.前言: 一般情况下从TCP服务器读取数据是放在一个线程里读的,但是刷新界面又不得不放在线程外面,所以需要用消息传递把线程里从TCP里获得的数据传送出来,然后根据数据对页面进行相应的刷新. 二.业务 ...

  8. [芯片] 4、接口技术·实验四·串行接口8251A

    目录 一.实验目的和要求... 2 二.实验原理与背景... 3 三.实验具体的内容... 3 四.实验的代码说明... 4 五.实验结果的分析... 6 附录资料 一.实验目的和要求 学会8251芯 ...

  9. 服务器端json数据文件分割合并解决方案

    问题引入 Json 是什么就不多说了,本文把Json理解成一种协议. 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议. 比如说,某公司有一套测评题目(基于Jso ...

  10. HTML Meta标签知多少

    文章已同步至个人Blog:Benjamin - 专注前端开发和用户体验 一.基本属性 标签常常被用来定义HTML文档的元数据或者HTTP协议的指向,这些元数据常用在SEO.HTML Pages or ...