zoukankan
html css js c++ java
C# Udp Socket例子
服务器端:
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Net;
using
System.Net.Sockets;
namespace
UDPServer
{
class
Program
{
static
void
Main(
string
[] args)
{
int
recv;
byte
[] data
=
new
byte
[
1024
];
//
构建TCP 服务器
//
得到本机IP,设置TCP端口号
IPEndPoint ipep
=
new
IPEndPoint(IPAddress.Any ,
8001
);
Socket newsock
=
new
Socket(AddressFamily.InterNetwork, SocketType.Dgram , ProtocolType.Udp);
//
绑定网络地址
newsock.Bind(ipep);
Console.WriteLine(
"
This is a Server, host name is {0}
"
,Dns.GetHostName());
//
等待客户机连接
Console.WriteLine(
"
Waiting for a client
"
);
//
得到客户机IP
IPEndPoint sender
=
new
IPEndPoint(IPAddress.Any,
0
);
EndPoint Remote
=
(EndPoint)(sender);
recv
=
newsock.ReceiveFrom(data,
ref
Remote);
Console .WriteLine (
"
Message received from {0}:
"
, Remote.ToString ());
Console .WriteLine (Encoding .ASCII .GetString (data ,
0
,recv ));
//
客户机连接成功后,发送欢迎信息
string
welcome
=
"
Welcome !
"
;
//
字符串与字节数组相互转换
data
=
Encoding .ASCII .GetBytes (welcome );
//
发送信息
newsock .SendTo (data ,data.Length ,SocketFlags .None ,Remote );
while
(
true
)
{
data
=
new
byte
[
1024
];
//
发送接受信息
recv
=
newsock.ReceiveFrom(data ,
ref
Remote);
Console .WriteLine (Encoding .ASCII .GetString (data ,
0
,recv));
newsock .SendTo (data ,recv ,SocketFlags .None ,Remote );
}
}
}
}
客户端:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Net;
using
System.Net.Sockets;
namespace
UDPClient
{
class
Program
{
static
void
Main(
string
[] args)
{
byte
[] data
=
new
byte
[
1024
];
string
input ,stringData;
//
构建TCP 服务器
Console.WriteLine(
"
This is a Client, host name is {0}
"
, Dns.GetHostName());
//
设置服务IP,设置TCP端口号
IPEndPoint ipep
=
new
IPEndPoint(IPAddress .Parse (
"
127.0.0.1
"
) ,
8001
);
//
定义网络类型,数据连接类型和网络协议UDP
Socket server
=
new
Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string
welcome
=
"
Hello!
"
;
data
=
Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ipep);
IPEndPoint sender
=
new
IPEndPoint(IPAddress.Any,
0
);
EndPoint Remote
=
(EndPoint)sender;
data
=
new
byte
[
1024
];
//
对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制
//
server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);
int
recv
=
server.ReceiveFrom(data,
ref
Remote);
Console.WriteLine(
"
Message received from {0}:
"
, Remote.ToString());
Console.WriteLine(Encoding .ASCII .GetString (data,
0
,recv));
while
(
true
)
{
input
=
Console .ReadLine ();
if
(input
==
"
exit
"
)
break
;
server .SendTo (Encoding .ASCII .GetBytes (input ),Remote );
data
=
new
byte
[
1024
];
recv
=
server.ReceiveFrom(data,
ref
Remote);
stringData
=
Encoding.ASCII.GetString(data,
0
, recv);
Console.WriteLine(stringData);
}
Console .WriteLine (
"
Stopping Client.
"
);
server .Close ();
}
}
}
查看全文
相关阅读:
JVM内存模型与类加载机制
JS 实现动态轮播图
Jedis & spring-data-redis
JAVA反射机制与动态代理
JavaScript -- 筑基
IO流与装饰者模式
ES&IK环境搭建
Elasticsearch笔记
DQL
DDL--DML
原文地址:https://www.cnblogs.com/zhangpengshou/p/1307622.html
最新文章
发布HTML5 RTS游戏-古代战争
深入理解requestAnimationFrame
理解DOM
前端的架构设计与演化实例
我对Stub和Mock的理解
炸弹人游戏开发系列(9):总结
炸弹人游戏开发系列(8):放炸弹
【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
【Python】词频统计
【Python】文件操作
热门文章
【Python】组合数据类型
【操作系统】并发程序设计
【操作系统】文件系统
【操作系统】处理器管理
【操作系统】存储管理
【操作系统】设备管理
【操作系统】概述
numpy函数fromfunction分析
算法--快速排序
解决root无法登陆
Copyright © 2011-2022 走看看