我的网络第一课:2013/10/21
来源:互联网 发布:网络ping大包丢包 编辑:程序博客网 时间:2024/06/07 04:45
2013/10/21
学习网络:c/s模型(client/server)
我的第一个程序,网络中文件的传输就像是写信一样:
对于发送方:
step 1:有一个信封
step 2:写上对方的地址,然后写上内容;
step 3:发送出去.
下面是一个基于UDP协议:
//sendto_UDP
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
++++++++++++++++++++++++++++++++++
接收方:
//server_UDP
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
学习网络:c/s模型(client/server)
我的第一个程序,网络中文件的传输就像是写信一样:
对于发送方:
step 1:有一个信封
step 2:写上对方的地址,然后写上内容;
step 3:发送出去.
下面是一个基于UDP协议:
//sendto_UDP
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
---------------------------------------------------------------
//step 1
int fd = socket(AF_INET,SOCK_DGRAM,0);//创建一套接口,就像是找一个信封。
if(fd == -1)
{perror("socket");return 1;}
----------------------------------------------------------------
//step 2填写内容及对方的地址。
char *p = "hello";//内容
//man 这个结构体填的是接收方的信息。就像是收信人的地址一样。
struct sockaddr_in man;
man.sin_family = AF_INET;
man.sin_port = htons(9527);//将9527端口号,host字节序,转换成network字节序。s->unsigned short
//man.sin_addr.s_addr = htonl(0x7f000001);man.sin_addr.s_addr = inet_addr("127.0.0.1");//将点分十进制的字符串,转换成功32的整数。
-----------------------------------------------------------------
//step 3发送。
int ret = sendto(fd,p,20,0,(struct sockaddr *)&man,16);//向fd中发送p 这个指针所指向的内容中前20个字节,flag=0,再填上标明目的地的地址。最后是这个结构体的大小。
if(fd == -1)
{
perror("sendto");return 1;
}}
close(fd);
return 0;
++++++++++++++++++++++++++++++++++
接收方:
//server_UDP
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
int fd = socket(AF_INET,SOCK_DGRAM,0);if(fd < 0){
perror("socket");return 1;
}
char buff[1024]={0};//接收方自己的信息。struct sockaddr_in man;man.sin_family = AF_INET;man.sin_port = htons(9527);man.sin_addr.s_addr = htonl(INADDR_ANY);//INADDR_ANY接收自已网卡上的所有到来的信息。
int ret = bind(fd,(struct sockaddr *)&man,16);//监听这个端口。if(ret < 0){
perror("bind");return 1;
}struct sockaddr_in from;//用来填充发信人的信息int len = 0;//这个结构体的大小。ret = recvfrom(fd,buff,1024,0,(struct sockaddr *)&from,&len);if(ret < 0){
perror("recvform");return 1;
}printf("%s\n",buff);return 0;}
- 我的网络第一课:2013/10/21
- 我的Java第一课
- 我的第一堂课
- 我的android第一课
- 我的csdn第一课
- 我的csdn第一课
- 我的CSDN第一课
- 我的csdn第一课
- 我的csdn第一课
- 我的第一课:matlab
- 我的android第一课
- 我的惠普第一课
- 我的ajax第一课
- 我的AngularJs第一课
- 我的seaJs第一课
- 我的Java第一课
- 我的java第一课
- 我的第一个Python3 网络爬虫 百度百科爬虫
- java中的集合包简要分析
- Java层Binder机制详解
- switch语句实现页面的跳转
- 多线程---单例模式--恶汉式--懒汉式
- SVD分解的理解
- 我的网络第一课:2013/10/21
- 字符串模板总结(五):后缀自动机
- (1)遍历数组中的每个元素
- Linux 调优方案, 修改最大连接数(ulimit命令)
- Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果(转)
- java中并发包简要分析01
- 大学英语六级听力——005(Describing people )
- jQuery
- jQuery