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的简单实例的主要内容,如果未能解决你的问题,请参考以下文章

C语言题目:设计一个程序输入年月日 输出下一天的年月日 要C语言,不要C++

如何让python调用C和C++代码

C语言——文件操作

C语言是开源的吗?C++是开源的吗?C语言C++是两个开源的标准,而不是开源软件或其它

从 .SO ( linux ) 导出 C++ 类

谁知道魔兽世界程序设计上是啥语言设计的?C还是C++,JAVA?