Chinaunix
标题:
关于linux下的网络编程
[打印本页]
作者:
qdcanyun
时间:
2011-11-18 01:49
标题:
关于linux下的网络编程
最近在学习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;
}
复制代码
作者:
file3
时间:
2011-11-18 09:07
使用getsockname可以看本機使用的那個端口與ip
作者:
zcheung
时间:
2011-11-18 15:36
哥
你怎麽又跑到這裏展示你的智無敵來了?
在另一個版塊我已經很好的回答了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2