- 论坛徽章:
- 0
|
最近在学习linux环境下的网络编程
但是对socket还是不甚了解
这是我完成的第一个代码
功能:使用udp 能够接受一个字符串
这个是server
遇到问题有下:
1.如果将recvfrom放置在像for (;;)中 ,则无法接受任何数据
2.如何知道该如何监听本机的端口
个人理解 作为一台server ,需要知道三个端口 udp源端口 udp目的端口 还有需要在本机上有一个端口用来收udp数据报 在以下代码中如何体现
像各位大牛求教- #include<stdio.h>
- #include<stdlib.h>
- #include<sys/types.h>
- #include<netinet/in.h>
- #include<sys/wait.h>
- #include<sys/socket.h>
- int main(){
- int serverPort,clientPort;
- struct sockaddr_in servAddr,clientAddr,unknown,local;
- int serverLen,clientLen;
- int sockfd,recvlen;
- char buff[100];
- sprintf(buff,"hello world");
- sockfd = socket(AF_INET,SOCK_DGRAM,0);
-
- bzero(&servAddr,sizeof(servAddr));
- servAddr.sin_family = AF_INET;
- servAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
- servAddr.sin_port = htons(1234);
- bzero(&clientAddr,sizeof(clientAddr));
- clientAddr.sin_family = AF_INET;
- clientAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
- clientAddr.sin_port = htons(1234);
-
- local.sin_family = servAddr.sin_family;
- local.sin_addr.s_addr = servAddr.sin_addr.s_addr;
- local.sin_port = servAddr.sin_port;
- bind(sockfd,&local,sizeof(local));
- while (1){
- recvlen = recvfrom(sockfd,buff,100,0,&unknown,sizeof(unknown));
- buff[recvlen] = 0;
- printf("receive message is %s\n",buff);
- }
- close(sockfd);
- return 0;
- }
复制代码 |
|