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
#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
相关文章推荐
- linux网络编程之socket(十四):基于UDP协议的网络程序
- 基于Udp的Socket网络编程聊天程序
- TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- 基于Udp的Socket网络编程聊天程序
- Linux下的socket协议UDP Client/Server程序
- TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符
- Java网络编程,Socket,ServerSocket使用,TCP,UDP的异同
- linux网络编程之socket(十四):基于UDP协议的网络程序
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 孙鑫 第十四课Socket编程之四 实例UdpServerDlg.h
- 【Unix 网络编程】UDP 客户/服务器简单 Socket 程序
- Linux网络编程之UDP Socket程序示例
- 套接字(socket)编程简单实现server-client聊天程序
- socket 编程练习--UDP聊天程序
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 网路编程-UDP-DatagramSocket、DatagramPacket ||LocalServerSocket和LocalSocket
- linux网络编程之socket(十四):基于UDP协议的网络程序
- client.c和server.c 网络套接字socket编程热身程序
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序