zoukankan
html css js c++ java
WinSock UDP通讯实例
下载
#include
<
WinSock2.h
>
#include
<
stdio.h
>
#define PORT
8888
int
main()
//
server
{
WSADATA wsaData;
int
Ret
=
WSAStartup(MAKEWORD(
2
,
2
),
&
wsaData);
printf(
"
Server
!\n
"
);
if
(Ret
!=
0
)
{
printf(
"
无法初始化winsock.\n
"
);
WSACleanup();
}
else
{
//
printf("初始化winsock成功\n");
}
if
( LOBYTE( wsaData.wVersion )
!=
2
||
HIBYTE( wsaData.wVersion )
!=
2
)
{
WSACleanup( );
return
1
;
}
SOCKET socket
=
::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
sockaddr_in addr;
addr.sin_addr.S_un.S_addr
=
INADDR_ANY;
addr.sin_family
=
AF_INET;
addr.sin_port
=
ntohs(PORT);
if
(socket
==
INVALID_SOCKET)
{
printf(
"
socket Error!
"
);
}
int
rs
=
bind(socket,(sockaddr
*
)
&
addr,sizeof(addr));
if
(rs
!=
0
)
{
printf(
"
bind failed!
"
);
return
1
;
}
char
buf[
200
]
=
"
\0
"
;
char
temp[
200
]
=
"
\0
"
;
sockaddr_in addrcl;
int
len
=
sizeof(sockaddr);
while
(
1
)
{
recvfrom(socket,buf,sizeof(buf),
0
,(sockaddr
*
)
&
addrcl,
&
len);
//
用新建的地址结构保存客户端的信息
sprintf(temp,
"
%s:%s
"
,inet_ntoa(addrcl.sin_addr),buf);
sendto(socket,temp,strlen(temp)
+
1
,
0
,(sockaddr
*
)
&
addrcl,sizeof(addr));
if
(strcmp(buf,
"
srvexit
"
)
==
0
)
{
break
;
}
printf(
"
%s
"
,buf);
}
closesocket(socket);
WSACleanup();
printf(
"
exit\n
"
);
return
0
;
}
#include
<
WinSock2.h
>
#include
<
stdio.h
>
#define PORT
8888
int
main()
{
WSADATA wsaData;
int
Ret
=
WSAStartup(MAKEWORD(
2
,
2
),
&
wsaData);
printf(
"
Client
..!\n
"
);
if
(Ret
!=
0
)
{
printf(
"
无法初始化winsock.\n
"
);
WSACleanup();
}
else
{
//
printf("初始化winsock成功\n");
}
SOCKET socketc
=
::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
sockaddr_in addr;
addr.sin_addr.S_un.S_addr
=
inet_addr(
"
127.0.0.1
"
);
addr.sin_family
=
AF_INET;
addr.sin_port
=
ntohs(PORT);
if
(socketc
==
INVALID_SOCKET)
{
printf(
"
socket Error!
"
);
}
int
len
=
sizeof(sockaddr);
while
(
1
)
//
client
{
char
buf[
200
]
=
"
\0
"
;
char
rbuf[
300
]
=
"
\0
"
;
printf(
"
\n:
"
);
scanf(
"
%s
"
,
&
buf);
sendto(socketc,buf,strlen(buf)
+
1
,
0
,(SOCKADDR
*
)
&
addr,len);
//
用回原来的地址结构
recvfrom(socketc,rbuf,sizeof(rbuf),
0
,(SOCKADDR
*
)
&
addr,
&
len);
if
(strcmp(rbuf,
"
exit
"
)
==
0
)
{
break
;
}
printf(
"
%s
"
,rbuf);
}
closesocket(socketc);
WSACleanup();
printf(
"
end\n
"
);
return
0
;
}
查看全文
相关阅读:
centos7上以RPM方式安装MySQL5.6
区别和详解:jQuery extend()和jQuery.fn.extend()
jQuery笔记总结
CSS Hack的一些知识
12种不宜使用的javascript的语法
64位Win7系统下vs2010调试无法连接oracle解决办法
HashCode()与equals()深入理解
Java ArrayList自动扩容机制
Java基础知识
MySQL的MVCC机制
原文地址:https://www.cnblogs.com/ahuo/p/890826.html
最新文章
Kali Linux 更新源
KALI Linux安装VMware Tools
Kali 2.0 安装教程
Windows下使用Word宏程序执行命令
Windows不用开启Hyper-V安装docker环境
Win10使用Anaconda管理Python3与Python2(兼容Atom)
Python输出中文乱码
Chrome忽略证书错误与关闭XSS过滤器
Ubuntu16.04设定ip
使用单文件运行Django显示HelloWorld
热门文章
Linux eventfd
Android L Bluedroid基本资讯
Linux设备模型之kobject
[翻译]你不会想知道的kobject,kset,和ktypes
2014.04.12石象湖之行
Linux设备子系统初始化
Win7安装解压版MySQL
Java实现不遍历数组求和
Java高性能反射工具包ReflectASM
Spring容器自动调用方法的两种方式
Copyright © 2011-2022 走看看