UDP简单实现并发服务器和客户端简单通信
2016-12-05 22:20
549 查看
以下程序均未做错误处理,以后有时间一定补上
客户端
服务器
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
void strlwr(char *str)
{
char *p;
p = str;
while(*p != '\0')
{
if((*p >= 'a') && (*p <= 'z'))
{
*p -= 32;
}
p++;
}
}
int main()
{
int sockfd;
int n;
struct sockaddr_in servaddr,cliaddr;
char mesg[1000];
socklen_t clilen;
sockfd = socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(3200);
bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
clilen = sizeof(cliaddr);
for(;;)
{
for(;;)
{
n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr*)&cliaddr,&clilen);
if(n == 0)
{
printf("client closed");
exit(-1);
}
printf("******************\n");
mesg
= '\0';
printf("%s\n",mesg);
printf("*******************\n");
strlwr(mesg);
sendto(sockfd,mesg,n,0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));
}
//close(sockfd);
}
close(sockfd);
return 0;
}
客户端
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <netinet/in.h> #include <sys/socket.h> int main(int argc,char **argv) { int sockfd; int n; struct sockaddr_in servaddr; char readbuf[1000]; char sendbuf[1000]; sockfd = socket(AF_INET,SOCK_DGRAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = inet_addr(argv[1]); servaddr.sin_port = htons(3200); while(fgets(sendbuf,1000,stdin) != NULL) { sendto(sockfd,sendbuf,strlen(sendbuf),0,(struct sockaddr *)&servaddr,sizeof(servaddr)); n = recvfrom(sockfd,readbuf,1000,0,NULL,NULL); readbuf = '\0'; fputs(readbuf,stdout); } close(sockfd); return 0; }
服务器
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
void strlwr(char *str)
{
char *p;
p = str;
while(*p != '\0')
{
if((*p >= 'a') && (*p <= 'z'))
{
*p -= 32;
}
p++;
}
}
int main()
{
int sockfd;
int n;
struct sockaddr_in servaddr,cliaddr;
char mesg[1000];
socklen_t clilen;
sockfd = socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(3200);
bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
clilen = sizeof(cliaddr);
for(;;)
{
for(;;)
{
n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr*)&cliaddr,&clilen);
if(n == 0)
{
printf("client closed");
exit(-1);
}
printf("******************\n");
mesg
= '\0';
printf("%s\n",mesg);
printf("*******************\n");
strlwr(mesg);
sendto(sockfd,mesg,n,0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));
}
//close(sockfd);
}
close(sockfd);
return 0;
}
相关文章推荐
- Python实现udp协议的简单服务器和客户端通信
- Linux C实现简单的UDP服务器客户端通信
- C#服务器客户端通信简单实现
- Java 利用套接字Socket实现简单的服务器与客户端通信
- UDP实现服务器与客户端通信
- 实现简单UDP服务器客户端模型
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- Nodejs实现的一个简单udp广播服务器、客户端
- python3实现UDP协议的简单服务器和客户端
- Java基于UDP实现服务器和多客户端之间的通信
- 基于TCP/UDP的Socket网络通信系列之客户端与服务器的简单对话(三)
- C#基于TCP&UDP实现服务器与多个客户端之间的通信(客户端之间直接通信,不靠服务器端转发消息)
- Java实现单个客户端与服务器UDP通信
- python3实现UDP协议的简单服务器和客户端
- ACE+线程池实现一个简单的服务器+多客户端通信程序
- 简单的网络通信程序,客户端发送hello,server 服务器反馈 ok UDP
- Java简单实现UDP服务端和客户端的通信
- 从简单到复杂实现TCP客户端服务器通信
- 实现vs2013客户端服务器之间的简单通信,hello world 程序。