windows 下 c语言,不是c++,c语言socket的简单实例

需要一个vc++6.0中能运行的socket的实例,包括server.c和client.c,谢谢啊... 需要一个vc++6.0中能运行的socket的实例,包括server.c和client.c,谢谢啊 展开
 我来答
MFC问题
2012-02-11 · TA获得超过101个赞
知道答主
回答量:118
采纳率:0%
帮助的人:113万
展开全部
服务器:
#include<stdio.h>
#include<winsock.h>
#pragma comment (lib,"wsock32.lib")
void main()
{
WSADATA data;
WSAStartup(MAKEWORD(2,0),&data);
SOCKET socket1;
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen =sizeof(from);
local.sin_family=AF_INET;
local.sin_port=htons(1000); ///监听端口
local.sin_addr.s_addr=INADDR_ANY; ///本机
socket1=socket(AF_INET,SOCK_DGRAM,0);
bind(socket1,(struct sockaddr*)&local,sizeof local);
while (1)
{
char buffer[1024]="\0";
printf("waiting for message from others-------------\n");
if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
{
printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer);
////给cilent发信息
sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,fromlen);

}
}
closesocket(socket1);
WSACleanup();
}

客户端:
#include<stdio.h>
#include<winsock.h>
#pragma comment (lib,"wsock32.lib")

void main()
{
WSADATA data;
WSAStartup(MAKEWORD(2,0),&data);
SOCKET socket1;
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(1000); ///server的监听端口
server.sin_addr.s_addr=inet_addr("???.???.???.???"); ///server的地址

socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
char buffer[1024]="\0";
printf("input message\n");
scanf("%s",buffer);
if (strcmp(buffer,"bye")==0)
break;
if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
{
if (recvfrom(socket1,
buffer,
sizeof buffer,
0,
(struct sockaddr*)&server,&len) != SOCKET_ERROR)
printf("rece from server:%s\n",buffer);
}
}
closesocket(socket1);
WSACleanup();
}
更多追问追答
追问
谢谢大神啦,但是编译出下面的问题,是哪里没设置对么?
c:\program files\microsoft visual studio\myprojects\server\server.c(8) : error C2275: 'SOCKET' : illegal use of this type as an expression
追答
我在vc++6.0都可以通过,你应该得使用.c++作为它的后缀名称,则能够顺利编过
百度网友c387c8b43
2012-04-01
知道答主
回答量:18
采纳率:0%
帮助的人:11.2万
展开全部
写的不错啊,这代码。你可以将其中定义变量的语句放到main函数的开始初,就可以编译了。因为.c程序不知道为什么不能把变量的定义放到中间或者下面的地方,除了for循环等可以临时定义,其他就不行。WSAStartup(MAKEWORD(2,0),&data); 是执行函数,在它下面不能再定义变量了。你试试吧。我修改了,还可以使用,用我自己的电脑既做客户端,又做服务器端,可以通信。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式