windows 下 c语言,不是c++,c语言socket的简单实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows 下 c语言,不是c++,c语言socket的简单实例相关的知识,希望对你有一定的参考价值。
需要一个vc++6.0中能运行的socket的实例,包括server.c和client.c,谢谢啊
服务器:#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++作为它的后缀名称,则能够顺利编过
追问用.c做为扩展名就不能嘛?主要是有写出来的c要用于单片机编程,用.cpp是不能编译通过的...
追答这个你得另请高明哈,因为套接字这个我也是自学的,单片机这些大三才会学,这个问题也许未来我也需要面对,但现在限于知识我也回答不了不好意思哈!!!
参考技术A 写的不错啊,这代码。你可以将其中定义变量的语句放到main函数的开始初,就可以编译了。因为.c程序不知道为什么不能把变量的定义放到中间或者下面的地方,除了for循环等可以临时定义,其他就不行。WSAStartup(MAKEWORD(2,0),&data); 是执行函数,在它下面不能再定义变量了。你试试吧。我修改了,还可以使用,用我自己的电脑既做客户端,又做服务器端,可以通信。以上是关于windows 下 c语言,不是c++,c语言socket的简单实例的主要内容,如果未能解决你的问题,请参考以下文章