connect()在UDP连接中的应用一例
2013-03-16 16:55
393 查看
服务器:
[code]#include<stdio.h>
[/code]
客户端:
[code]#include<sys/socket.h>
[/code]
运行:
运行了两个服务器:
客户端:
这样,通过在UDP中使用connect(),省去了每次都输入服务器地址的操作,而且一个在这种情况下,一个套接字在不关闭的情况下可以实现多次调用connect()。
[code]#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<strings.h>
#include<stdlib.h>
#defineN256
typedefstructsockaddrSA;
intmain(intargc,char*argv[])
{
intsockfd;
structsockaddr_inmy_addr,peer_addr;
socklen_tpeerlen=sizeof(peer_addr);
charbuffer
;
if((sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("failtosocket");
exit(-1);
}
my_addr.sin_family=PF_INET;
my_addr.sin_port=htons(atoi(argv[2]));
my_addr.sin_addr.s_addr=inet_addr(argv[1]);
if(bind(sockfd,(SA*)&my_addr,sizeof(my_addr))<0)
{
perror("failtobind");
exit(-1);
}
while(1)
{
recvfrom(sockfd,buffer,N,0,(SA*)&peer_addr,&peerlen);
printf("client:[%s:%d],%s",inet_ntoa(peer_addr.sin_addr),ntohs(peer_addr.sin_port),buffer);
sendto(sockfd,buffer,N,0,(SA*)&peer_addr,sizeof(peer_addr));
bzero(buffer,N);
}
return0;
}
[/code]
客户端:
#include<stdio.h>
[code]#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<strings.h>
#include<stdlib.h>
#include<unistd.h>
#defineN256
typedefstructsockaddrSA;
intmain(void)
{
intsockfd;
structsockaddr_inmy_addr;
charbuffer
;
if((sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("failtosocket");
exit(-1);
}
while(1)
{
bzero(buffer,N);
printf("exit?Y/N");
fgets(buffer,N,stdin);
if(strncmp(buffer,"Y",1)==0)
{
break;
}
else
{
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family=PF_INET;
printf("pleaseinputserver'sip>");
fgets(buffer,N,stdin);
buffer[strlen(buffer)-1]='\0';
my_addr.sin_addr.s_addr=inet_addr(buffer);
printf("pleaseinputserver'sport>");
fgets(buffer,N,stdin);
buffer[strlen(buffer)-1]='\0';
my_addr.sin_port=htons(atoi(buffer));
connect(sockfd,(SA*)&my_addr,sizeof(my_addr));
while(1)
{
fgets(buffer,N,stdin);
if(strncmp(buffer,"quit",4)==0)
{
break;
}
send(sockfd,buffer,N,0);
bzero(buffer,N);
recv(sockfd,buffer,N,0);
printf("receivefromtheserver>%s",buffer);
}
}
}
close(sockfd);
return0;
}
[/code]
运行:
运行了两个服务器:
客户端:
这样,通过在UDP中使用connect(),省去了每次都输入服务器地址的操作,而且一个在这种情况下,一个套接字在不关闭的情况下可以实现多次调用connect()。
相关文章推荐
- UDP连接调用connect()函数
- udp connect 有连接
- UDP连接调用connect()函数
- 应用 Group By 与 sys_connect_by_path 实现字符连接
- 在UDP套按字上调用Connect建立连接
- 在UDP套按字上调用Connect建立连接
- 在UDP套按字上调用Connect建立连接
- UDP连接调用connect()函数
- 在UDP套按字上调用Connect建立连接
- LINUX 下,编程自学四:UDP通信(connect用于UDP)
- udp调用connect有什么作用?
- C# UDP 连接通信 简单示例
- 连接mysql时报:message from server: "Host '192.168.76.89' is not allowed to connect to this MySQL server
- 使用MVC连接数据库及MVC应用的一般命名
- 远程连接MySQL数据库提示错误Host is not allowed to connect this MySQL server
- 如何使用Jenkins的public over SSH插件连接应用服务器
- UDP编程中的connect(zt)
- MYSQL远程连接出现Host * is not allowed to connect to this MySQL server
- ASP连接ACCESS数据库一例