我的网络第一课: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()

{

---------------------------------------------------------------

//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;

}