LINUX 下,编程自学四:UDP通信(connect用于UDP)
2014-04-24 21:24
459 查看
service.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 5678
int main()
{
int sock;
struct sockaddr_in server;
struct sockaddr_in client;
size_t len;
char buf[100];
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=htons(INADDR_ANY);
//create socket;
sock = socket(AF_INET,SOCK_DGRAM,0);
if(sock < 0)
{
perror("socket");
return -1;
}
//bind
if(bind(sock,(struct sockaddr *)&server,sizeof(server)) < 0)
{
perror("bind");
close(sock);
return -1;
}
while(1)
{
memset(buf,0,sizeof(buf));
len = sizeof(client);
if(recvfrom(sock,buf,99,0,(struct sockaddr *)&client,&len) < 0)
{
perror("recvfrom");
break;
}
printf("message:%s,client IP:%s,client PORT:%d\n",buf,inet_ntoa(client.sin_addr),htons(client.sin_port));
sendto(sock,"FIrst connect",16,0,(struct sockaddr *)&client,sizeof(client));
if(strcmp(buf,"bye") == 0)
break;
}
close(sock);
return 0;
}
client.c(注释部分为:非connect用于UDP)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 5678
int main()
{
int sock;
struct sockaddr_in server;
struct sockaddr_in client;
char buf[100];
sock = socket(AF_INET,SOCK_DGRAM,0);
if(sock < 0)
{
perror("socket");
return -1;
}
//send
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
/*sendto(sock,"client connet",20,0,(struct sockaddr *)&server,sizeof(server));
size_t len;
len = sizeof(client);
while(1)
{
if(recvfrom(sock,buf,99,0,(struct sockaddr *)&client,&len) < 0)
{
perror("recvfrom");
close(sock);
return -1;
}
if(len != sizeof(server) )
{
printf("server IP :%s,message :%s\n",inet_ntoa(client.sin_addr),buf);
close(sock);
return 0;
}
printf("message = %s\n",buf);
}*/
//int connfd;
//connect(sock,(struct sockaddr *)&server,sizeof(server));
if(connect(sock,(struct sockaddr *)&server,sizeof(server)) < 0)
{
perror("sock");
close(sock);
return -1;
}
if(send(sock,"12345345",10,0) < 0)
{
perror("send");
// close(connfd);
close(sock);
}
if(recv(sock,buf,99,0) < 0)
{
perror("recv");
// close(connfd);
close(sock);
}
printf("message = %s\n",buf);
//close(connfd);
close(sock);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 5678
int main()
{
int sock;
struct sockaddr_in server;
struct sockaddr_in client;
size_t len;
char buf[100];
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=htons(INADDR_ANY);
//create socket;
sock = socket(AF_INET,SOCK_DGRAM,0);
if(sock < 0)
{
perror("socket");
return -1;
}
//bind
if(bind(sock,(struct sockaddr *)&server,sizeof(server)) < 0)
{
perror("bind");
close(sock);
return -1;
}
while(1)
{
memset(buf,0,sizeof(buf));
len = sizeof(client);
if(recvfrom(sock,buf,99,0,(struct sockaddr *)&client,&len) < 0)
{
perror("recvfrom");
break;
}
printf("message:%s,client IP:%s,client PORT:%d\n",buf,inet_ntoa(client.sin_addr),htons(client.sin_port));
sendto(sock,"FIrst connect",16,0,(struct sockaddr *)&client,sizeof(client));
if(strcmp(buf,"bye") == 0)
break;
}
close(sock);
return 0;
}
client.c(注释部分为:非connect用于UDP)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define PORT 5678
int main()
{
int sock;
struct sockaddr_in server;
struct sockaddr_in client;
char buf[100];
sock = socket(AF_INET,SOCK_DGRAM,0);
if(sock < 0)
{
perror("socket");
return -1;
}
//send
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
/*sendto(sock,"client connet",20,0,(struct sockaddr *)&server,sizeof(server));
size_t len;
len = sizeof(client);
while(1)
{
if(recvfrom(sock,buf,99,0,(struct sockaddr *)&client,&len) < 0)
{
perror("recvfrom");
close(sock);
return -1;
}
if(len != sizeof(server) )
{
printf("server IP :%s,message :%s\n",inet_ntoa(client.sin_addr),buf);
close(sock);
return 0;
}
printf("message = %s\n",buf);
}*/
//int connfd;
//connect(sock,(struct sockaddr *)&server,sizeof(server));
if(connect(sock,(struct sockaddr *)&server,sizeof(server)) < 0)
{
perror("sock");
close(sock);
return -1;
}
if(send(sock,"12345345",10,0) < 0)
{
perror("send");
// close(connfd);
close(sock);
}
if(recv(sock,buf,99,0) < 0)
{
perror("recv");
// close(connfd);
close(sock);
}
printf("message = %s\n",buf);
//close(connfd);
close(sock);
return 0;
}
相关文章推荐
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- Linux 网络编程六(socket通信UDP版)
- LInux 下网络编程之一UDP通信实例详解
- linux网络编程--第一弹UDP基本通信
- LINUX下,编程自学九:daemon用于SERVER
- 关于linux下udp通信第二次建立connect后connect refused的解决
- Linux下基于UDP协议的C/S通信编程笔记
- linux socket编程 udp connect例子
- [Linux网络编程]UDP编程--UDP通信程序服务器端
- LINUX下,编程自学十:基于UDP的广播
- [Linux网络编程]UDP编程--UDP通信程序客户端
- LINUX 下,编程自学一:单一C/S 通信
- linux 网络编程:客户端与服务器通过TCP协议相互通信 + UDP
- Linux网络通信编程(套接字模型TCP\UDP与IO多路复用模型select\poll\epoll)
- Linux网络通信编程(套接字模型TCP\UDP与IO多路复用模型select\poll\epoll)
- Socket编程---使用无连接的数据报(UDP) 进行通信(转)
- linux 客户端 Socket 非阻塞connect编程
- Linux下的UDP编程
- Linux socket编程(二) 服务器与客户端的通信