博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【网络编程】——linux socket demo
阅读量:6367 次
发布时间:2019-06-23

本文共 3097 字,大约阅读时间需要 10 分钟。

#include 
#include
#include
#include
#include
#include
#include
#if 0#define UDP#else#define TCP#endifint sockfd;char* IP = "10.8.2.60";//char *IP = "127.0.0.1";#ifdef UDPshort PORT = 1025;#endif#ifdef TCPshort PORT = 2222;#endiftypedef struct sockaddr SA;void init(){#ifdef UDP sockfd = socket(AF_INET, SOCK_DGRAM, 0);#endif#ifdef TCP sockfd = socket(AF_INET, SOCK_STREAM, 0); 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)) == -1){ printf("connect failed!\n"); exit(-1); }#endif}int main (int argc, char *argv[]) { //char buf[2048]; char buf[512]; int index, i = 0; if (argc == 2) { index = atoi(argv[1]); } else { printf("Usage: ./client
\n"); return -1; } printf("start init ....\n"); init(); printf("connected...\n"); memset(buf, 1, 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 (1) { //printf("please input something:\n"); //scanf("%s", buf); //puts(buf); if (i == index) break;#ifdef TCP send(sockfd, buf, sizeof(buf), 0); printf("send 2048! index:%d\n", i);#endif#ifdef UDP printf("sendto 2048! index:%d\n", i); if (sendto(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&addr, sizeof(struct sockaddr)) == -1){ printf("sendto error!\n"); return -1; }#endif //sleep(1); i++; } close(sockfd); return 0;}

client。

#include 
#include
#include
#include
#include
#include
#include
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 UDPshort PORT = 1025;#elseshort PORT = 2222;#endifvoid init(){#ifdef TCP sockfd = socket(AF_INET, SOCK_STREAM, 0); //tcp#endif#ifdef UDP sockfd = socket(AF_INET, SOCK_DGRAM, 0); //udp#endif if(sockfd == -1){ printf("socket failed!\n"); exit(-1); } 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)) == -1) { printf("bind failed!\n"); exit(-1); }#ifdef TCP if(listen(sockfd, 10) == -1) { printf("listen failed!\n"); exit(-1); }#endif}int main (int argc, char *argv[]) { int fd; int ret; char buf[512]; int index = 0; init(); while (1) {#ifdef TCP struct sockaddr_in fromaddr; socklen_t len = sizeof(fromaddr); fd = accept(sockfd, (SA *)&fromaddr, &len); if (fd < 0) { printf("accept failed!\n"); continue; } printf("fd:%d\n", fd);#endif memset(buf, 1, sizeof(buf)); while (1) {#ifdef TCP if ((ret = recv(fd, buf, sizeof(buf), MSG_WAITALL)) > 0) {#endif#ifdef UDP printf("udp!\n"); if ((ret = recvfrom(sockfd, buf, sizeof(buf), MSG_WAITALL, NULL, NULL)) > 0) {#endif printf("ret %d\n", ret); } else { printf("recvfrom failed! ret:%d\n", ret); break; } printf("index:%d\n", index); index++; } } return 0;}

server。

转载地址:http://nbrma.baihongyu.com/

你可能感兴趣的文章
30个免费下载高质量精美照片素材的网站(转)
查看>>
初学Linux
查看>>
Oracle Essbase入门系列(三)
查看>>
处理任务队列的工作线程的创建
查看>>
迎接互联网的明天--玩转3D Web
查看>>
心态成就财富
查看>>
TeeChart 4.0.2009.62335 不过期的方法
查看>>
云安全 安全领域的最大热点之一
查看>>
微软面试题:正则表达式提取链接地址
查看>>
Java MD5 加密加强版
查看>>
当时遇到的主要难点在于TextView的内容不会刷新改变值,今天终于通过Timer和Handler实现了,分享给大家...
查看>>
CentOS卸载系统自带的OpenJDK并安装Sun的JDK的方法
查看>>
二路归并排序 代码实例
查看>>
【转】理解 pkg-config 工具
查看>>
【转】Android中intent传递对象和Bundle的用法
查看>>
TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
查看>>
什么是automatic variable?
查看>>
求数组的最长子数组之和的最大值
查看>>
Aptana Studio 介绍
查看>>
FireFox Personas for the NetBeans Platform
查看>>