- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章WCF中使用nettcp协议进行通讯的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
快速阅读 。
如何在wcf中用net tcp协议进行通讯,一个打开Wcf的公共类。比较好好,可以记下来。 配置文件中注意配置 Service,binding,behaviors. Service中配置endpoint 指明abc ,binding中配置tcp通讯的要关参数,behaivor中配置http请求的 地址 。
1.建立服务服务端 。
还是用上次的代码,提供一个user类,实现一个方法 。
1
2
3
4
5
6
7
8
9
10
11
12
|
[ServiceContract]
public
interface
IUser
{
[OperationContract]
string
GetUserInfo();
}
[ServiceContract]
public
interface
IUser
{
[OperationContract]
string
GetUserInfo();
}
|
2.ServiceHostManager公有类 。
通过公有类可以减少代码编写量,可以保存下来,以后用的时候 直接拿来用 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
public
interface
IServiceHostmanager : IDisposable
{
void
Start();
void
Stop();
}
public
class
ServiceHostManager<TService>:IServiceHostmanager
where TService:
class
{
private
ServiceHost host;
public
void
Dispose()
{
Stop();
}
public
ServiceHostManager()
{
host=
new
ServiceHost(
typeof
(User));
host.Opened+= (sender, e) =>
{
Console.WriteLine(
"wcf服务已经启动监听{0}"
,host.Description.Endpoints[0].Address);
};
host.Closed+= (sender, e) =>
{
Console.WriteLine(
"wcf服务已经启动关闭{0}"
, host.Description.Endpoints[0].Address);
};
}
public
void
Start()
{
Console.WriteLine(
"正在启动wcf服务{0}"
,host.Description.Endpoints[0].Name);
host.Open();
}
public
void
Stop()
{
if
(host !=
null
&& host.State == CommunicationState.Opened)
{
Console.WriteLine(
"正在关闭wcf服务{0}"
, host.Description.Endpoints[0].Name);
host.Close();
}
}
public
static
Task StartNew(CancellationTokenSource conTokenSource)
{
var task = Task.Factory.StartNew(() =>
{
IServiceHostmanager shm =
null
;
try
{
shm =
new
ServiceHostManager<TService>();
shm.Start();
while
(
true
)
{
if
(conTokenSource.IsCancellationRequested && shm !=
null
)
{
shm.Stop();
break
;
}
}
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
if
(shm !=
null
) shm.Stop();
}
},conTokenSource.Token);
return
task;
}
}
|
3.配置的相关参数 。
配置文件中注意配置 Service,binding,behaviors. Service中配置endpoint 指明abc ,binding中配置tcp通讯的要关参数,behaivor中配置http请求的 地址 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
configuration
>
<
system.serviceModel
>
<
services
>
<
service
name
=
"hcbServiceB.User"
behaviorConfiguration
=
"userBehavior"
>
<
endpoint
address
=
"net.tcp://localhost:12345/User"
binding
=
"netTcpBinding"
contract
=
"hcbServiceB.IUser"
>
<
identity
>
<
dns
value
=
"localhost"
/>
</
identity
>
</
endpoint
>
</
service
>
</
services
>
<
bindings
>
<
netTcpBinding
>
<
binding
name
=
"netTcpBindingConfig"
closeTimeout
=
"00:30:00"
openTimeout
=
"00:30:00"
receiveTimeout
=
"00:30:00"
sendTimeout
=
"00:30:00"
transactionFlow
=
"false"
transferMode
=
"Buffered"
transactionProtocol
=
"OleTransactions"
hostNameComparisonMode
=
"StrongWildcard"
listenBacklog
=
"100"
maxBufferPoolSize
=
"2147483647"
maxBufferSize
=
"2147483647"
maxConnections
=
"100"
maxReceivedMessageSize
=
"2147483647"
>
<
readerQuotas
maxDepth
=
"64"
maxStringContentLength
=
"2147483647"
maxArrayLength
=
"2147483647 "
maxBytesPerRead
=
"4096"
maxNameTableCharCount
=
"16384"
/>
<
reliableSession
ordered
=
"true"
inactivityTimeout
=
"00:30:00"
enabled
=
"false"
/>
<
security
mode
=
"Transport"
>
<
transport
clientCredentialType
=
"Windows"
protectionLevel
=
"EncryptAndSign"
/>
</
security
>
</
binding
>
</
netTcpBinding
>
</
bindings
>
<
behaviors
>
<
serviceBehaviors
>
<
behavior
name
=
"userBehavior"
>
<
serviceMetadata
httpGetEnabled
=
"True"
httpGetUrl
=
"http://localhost:8081/User"
/>
<
serviceDebug
includeExceptionDetailInFaults
=
"True"
/>
<
serviceThrottling
maxConcurrentCalls
=
"1000"
maxConcurrentInstances
=
"1000"
maxConcurrentSessions
=
"1000"
/>
</
behavior
>
</
serviceBehaviors
>
</
behaviors
>
</
system.serviceModel
>
</
configuration
>
|
4.启动服务 。
控制台中启动服务 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
static
void
Main(
string
[] args)
{
Console.WriteLine(
"初始化..."
);
Console.WriteLine(
"服务运行期间,请不要关闭窗口。"
);
Console.Title =
"wcf net tcp测试 "
;
var cancelTokenSouce =
new
CancellationTokenSource();
ServiceHostManager<User>.StartNew(cancelTokenSouce);
while
(
true
)
{
if
(Console.ReadKey().Key == ConsoleKey.Escape)
{
Console.WriteLine();
cancelTokenSouce.Cancel();
break
;
}
}
}
|
5wcftesttoos软件测试 。
软件路径位于,可以根据自己安装vs的目录去找。 D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE 。
测试 。
参考:
WCF绑定netTcpBinding寄宿到控制台应用程序:http://www.zzvips.com/article/76680.html 。
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我的支持.
原文链接:http://www.hechunbo.com/index.php/archives/162.html 。
最后此篇关于WCF中使用nettcp协议进行通讯的方法的文章就讲到这里了,如果你想了解更多关于WCF中使用nettcp协议进行通讯的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
有没有办法只允许 https 而不是 http 与 Neo4j 服务器通信?另外,Neo4j Shell 的通信使用哪个 channel ,http 还是 https? 最佳答案 这来自 Neo4j
您好,我有新问题 :) 我正在构建带有面板的简单时事通讯,以向注册用户和时事通讯邮件地址发送邮件。 我有此代码,但时事通讯仅发送给注册用户。谁能告诉我为什么? $zapytanie = mys
第一次发帖,所以可能会有比必要的更多的信息,但我想彻底: 我们的 C 练习之一是创建发送器和接收器程序,通过 RS232 串行通信与零调制解调器交换数据。我们使用了虚拟端口程序(如果你想测试的话,我使
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我有一台通过 RS485 连接到另一台设备的单板计算机。计算机应向设备发送请求并接收响应(使用设备相关协议(protocol))。我可以毫无问题地发送消息并且设备接收它们(例如,我可以更改设备的参数)
我目前正在尝试在我的 Visual Basic 6 应用程序中引用 .NET COM 库。我已经使用 Regasm 注册了它,并且在我的类(class)中将 ComVisible 设置为 true。但
Closed. This question needs to be more focused 。它目前不接受答案。 想改善这个问题吗?更新问题,使其仅通过 editing this post 关注一个
我尝试通过 https 协议(protocol)在 Archiva 和 Jenkins 之间建立通信,但我收到以下错误: [WARNING] Could not transfer metadata .
我完成了一个运行良好的客户端/服务器套接字通信程序。现在我想弄清楚如何做到这一点,以便我可以同时拥有到服务器的多个客户端连接。我环顾四周,似乎有不止几种不同的方法可以做到这一点。所以我来这里是想向你们
我正在 mailchimp 中制作时事通讯,我在使用 outlook 时遇到了这个问题,它一直在干扰我的两个专栏,如图所示: 这是这部分的代码:
我正在创建一份时事通讯,经过大量努力,它在除 android 的 gmail 应用程序之外的任何地方都有效。问题是它似乎有最小字体大小,这会导致我的表格损坏。 有没有办法克服最小字体大小而不是媒体查询
C++ 作为Client端 view plaincopy to clipboardprint? 复制代码 代码如下: // Client.cpp : Defines the entry poi
我创建了 ECM NewsLetter,其中包含一些网站链接(另一个项目)。在在线版本的 NewsLetter 链接中工作正常,但是当我将此 NewsLetter 发送到我的电子邮件并尝试单击我的邮件
无论出于何种原因,我的文本大小调整在 iPhone 上无法正常工作,但在 Android 和其他电子邮件格式中工作正常。似乎看不出这两个文件之间有任何区别。图片也调整了大小,似乎只是文本的问题。
我正在开发一个网站,我需要将 HTML 新闻稿发送到邮件列表。 我构建了一个 html 框架,其中包含“在浏览器中查看”和“取消订阅”链接(原因会有所不同)。在管理模块中,我发布 html 并为 ht
我正在尝试在 B-L072Z-LRWAN(Master) 和 Arduino(Slave) 之间进行 I2C 通信。 我使用以下代码成功将数据从主站发送到从站: B-L072Z-LRWAN 代码: #
我有 ECM NewsLetter,其中包含指向站点(另一个项目)的一些链接。当我通过单击发送按钮将此时事通讯发送到我的电子邮件时 - 当我从电子邮件收件箱中单击它们时,链接不起作用。它显示 404
我是一名优秀的程序员,十分优秀!