请问谁知道用C怎么编一个udp通信程序

fatglasses 2006-05-10 09:41:09
大家知道源码吗??或者介绍一个网站也行哦!!!!急用!!!
...全文
279 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiliao 2006-05-21
  • 打赏
  • 举报
回复
up
caiyujie87 2006-05-21
  • 打赏
  • 举报
回复
up
fatglasses 2006-05-15
  • 打赏
  • 举报
回复
谢谢哦!!!
jixingzhong 2006-05-11
  • 打赏
  • 举报
回复
论坛中的:

服务器:

#include "stdafx.h"
#include<stdio.h>
#include<Winsock2.h>
#include<string.h>
#pragma comment(lib, "WS2_32.LIB")
void main()
{
char buffrecv[100];
memset(buffrecv,0,100);
SOCKET serversocket;
SOCKET newsocket;
struct sockaddr_in serveraddr;
struct sockaddr_in clientaddr;
WSADATA wsaData;

WSAStartup(MAKEWORD(2,2),&wsaData);
serversocket=socket(AF_INET,SOCK_STREAM,0);

serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(5555);
serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);

bind(serversocket,(sockaddr *)&serveraddr,sizeof(struct sockaddr_in));
listen(serversocket,5);

int size=sizeof(struct sockaddr_in);
newsocket=accept(serversocket,(sockaddr *) &clientaddr,&size);
recv(newsocket,buffrecv,100,0);

printf("receive:\n");
printf("%s",buffrecv);
}

客户端:

#include "stdafx.h"
#include<stdio.h>
#include<Winsock2.h>
#include<string.h>
#pragma comment(lib, "WS2_32.LIB")
void main()
{
/*
char buffsend[100];
char *p=buffsend;
for(;((*p)=getchar())!='\n';)
{
p++;
}
p=buffsend;
*/
char buffsend[100]="有只小鸟掉下水";
SOCKET clientsocket;
SOCKADDR_IN serveraddr;
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
clientsocket=socket(AF_INET,SOCK_STREAM,0);
Sleep(2000);
if(clientsocket==INVALID_SOCKET)
{
printf("create clientsocket failed\n");
exit(0);
}
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(5555);
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int result=connect(clientsocket,(SOCKADDR *)&serveraddr,sizeof(serveraddr));
Sleep(2000);
if(result==-1)
{
printf("connect server failed\n");
exit(0);
}
result=send(clientsocket,buffsend,100,0);
if(result==-1)
{
printf("send message failed\n");
}
Sleep(2000);
}
fatglasses 2006-05-10
  • 打赏
  • 举报
回复
谢谢楼上的兄弟!还差一个客户端的程序哦!!!能一起发出来吗??
jiongdy 2006-05-10
  • 打赏
  • 举报
回复
#include<Winsock2.h>
#include<stdio.h>
#define SERVPORT 3333
#define BACKLOG 10
void main()
{int sockfd;
struct sockaddr_in serv_addr;
struct sockaddr_in remote_addr;
//initial
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,0),&wsaData)!=0)
printf("initial error\n");
else
printf("initial ok\n");

serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr.s_addr=INADDR_ANY;
//serv_addr.sin_addr.s_addr=inet_addr("192.168.1.22");

remote_addr.sin_family=AF_INET;
remote_addr.sin_port=htons(SERVPORT);
//serv_addr.sin_addr.s_addr=INADDR_ANY;
remote_addr.sin_addr.s_addr=inet_addr("192.168.1.150");

//socket
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1)
printf("socket error\n");
else
printf("socket ok\n");

//bind
if(bind(sockfd,(struct sockaddr * )&serv_addr,sizeof(struct sockaddr))<0)
{
printf("bind error\n");
int i;
i=WSAGetLastError ();
printf("i=%d\n",i);
}
else
printf("bind ok\n");



//sendto and recv/测试用


while(1)
{ /*先发送数据*/
if (sendto(sockfd, "Hello, you are connected!\n",
25, 0,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr)) == -1)
printf("sendto error\n");
else
printf("sendto ok\n");
/*再接收数据,若没有数据则阻塞*/

int fromlen=sizeof(struct sockaddr);
char PkMsg[26];
if (recvfrom(sockfd,(char *)&PkMsg,25,0,(struct sockaddr *)&remote_addr,(int *)&fromlen) == -1)
printf("recvfrom error\n");
else
printf("recvfrom ok\n");
printf("%s\n",PkMsg);

}
closesocket(sockfd);
//}


}
zhousqy 2006-05-10
  • 打赏
  • 举报
回复
电子书网上多的是
Mypiger 2006-05-10
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/
搜索socket,sendto,recvfrom,bind 就有原代码的了
fatglasses 2006-05-10
  • 打赏
  • 举报
回复
哦!!网上有吗???我不想买书!!!
zichuanxiu 2006-05-10
  • 打赏
  • 举报
回复
建议买本socket编程的书看看,

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧