您的位置:首页 > 编程语言

udp socket编程,SERVER端程序

2011-07-27 16:38 316 查看
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <ctype.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
int S_Creat_socket()
{
struct sockaddr_in SAddr;
struct sockaddr_in CAddr;

SAddr.sin_family = AF_INET;
SAddr.sin_port = htons(5000);
SAddr.sin_addr.s_addr = htonl(INADDR_ANY);

CAddr.sin_family = AF_INET;
CAddr.sin_addr.s_addr = htonl(10.14.5.86);
CAddr.sin_port = htons(5000);
memset(SAddr.sin_zero, 0 , sizeof(SAddr.sin_zero));
memset(CAddr.sin_zero, 0 , sizeof(CAddr.sin_zero));
char* buf1[2048] = {0};
char* buf2 = "I am Server\n";
int backlog = 20;
int s_socketfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s_socketfd < 0)
{
printf("Sock open Error!");
return 1;
}

bind(s_socketfd, (struct sockaddr *)&SAddr, sizeof(struct sockaddr_in));
while(1)
{
recvfrom(s_socketfd, buf1, sizeof(buf1), 0, (struct sockaddr *)&SAddr, sizeof(struct sockaddr_in));
if (NULL != buf1)
{
printf("From client message is : %s\n",buf1);
sendto(s_socketfd, buf2, sizeof(buf2), 0, (struct sockaddr *)&CAddr, sizeof(struct sockaddr_in));
}
}
return 0;
}
int main()
{
int ret = 1;
ret = S_Creat_socket();
if (0 == ret)
{
printf("SOCKET SUCCESS\n");
}

return 0;
}

int socket(int domain, int type, int protocol);
1,domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);
2,type参数指定socket的类型:SOCK_STREAM:TCP 或SOCK_DGRAM:UDP
3,protocol通常赋值"0"和IPPROTO_UDP
4,socket主要的两个结构体:
struct sockaddr {
   unsigned short sa_family; /* 地址族, AF_xxx */
char sa_data[14]; /* 14 字节的协议地址 */
};

struct sockaddr_in {
   short int sin_family; /* 地址族 */
   unsigned short int sin_port; /* 端口号 */
   struct in_addr sin_addr; /* IP地址 */
   unsigned char sin_zero[8]; /* 填充0 以保持与struct sockaddr同样大小 */
  };
5,sin_addr.s_addr置为INADDR_ANY,系统会自动填入本机IP地址
6,int accept(int sockfd, void *addr, int *addrlen);
7,close(sockfd);
8,memset(SAddr.sin_zero, 0 , sizeof(SAddr.sin_zero));
9,http://bbs.chinaunix.net/thread-2070096-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: