菜鸟求助WCF双工的问题

问题描述

服务端:[ServiceContract(SessionMode=SessionMode.Required,CallbackContract=typeof(IQQSback))]publicinterfaceIQQS{[OperationContract(IsOneWay=true,IsInitiating=true,IsTerminating=false)]voidSpeak(stringvalue);[OperationContract(IsOneWay=true,IsInitiating=true,IsTerminating=false)]voidWhisper(stringname,stringvalue);[OperationContract(IsOneWay=true,IsInitiating=true,IsTerminating=false)]voidLeave();[OperationContract(IsOneWay=false,IsInitiating=true,IsTerminating=false)]List<string>join(stringvalue);}interfaceIQQSback{[OperationContract(IsOneWay=true)]voidReceive(stringsenderName,stringmessage);[OperationContract(IsOneWay=true)]voidReceiveWhisper(stringsenderName,stringmessage);[OperationContract(IsOneWay=true)]voidUserEnter(List<string>name);[OperationContract(IsOneWay=true)]voidUserLeave(stringname);}[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)]publicclassService1:IQQS{IQQSbackQQback=OperationContext.Current.GetCallbackChannel<IQQSback>();delegatevoiduserenter(List<string>username);staticeventuserenterUserEnterEvent;delegatevoiduserspeak(stringname,stringcontent);staticeventuserspeakUserSpeakEvent;delegatevoiduserWhisper(stringname,stringcontent);staticSortedList<string,userWhisper>Userspeaklist=newSortedList<string,userWhisper>();stringName;publicList<string>join(stringvalue){if(Userspeaklist.Keys.Contains(value)){returnnewstring[]{"已经有此用户"}.ToList();}this.Name=value;UserEnterEvent+=newuserenter(UserEnterEventFunction);if(UserEnterEvent!=null){UserEnterEvent(newstring[]{value}.ToList());}UserSpeakEvent+=newuserspeak(UserSpeakEventFunction);Userspeaklist.Add(value,UserWhisperFunction);returnUserspeaklist.Keys.ToList();}publicvoidSpeak(stringvalue){if(UserSpeakEvent!=null){UserSpeakEvent(this.Name,value);}}publicvoidWhisper(stringname,stringvalue){if(!Userspeaklist.Keys.Contains(name)){return;}Userspeaklist[name](name,value);}publicvoidLeave(){UserEnterEvent-=UserEnterEventFunction;UserSpeakEvent-=UserSpeakEventFunction;Userspeaklist.Remove(this.Name);QQback.UserLeave(this.Name);}voidUserEnterEventFunction(List<string>username){this.QQback.UserEnter(username);}voidUserSpeakEventFunction(stringname,stringcontent){QQback.Receive(name,content);}voidUserWhisperFunction(stringname,stringcontent){QQback.ReceiveWhisper(name,content);}}

服务端配置文件:<?xmlversion="1.0"encoding="utf-8"?><configuration><system.serviceModel><behaviors><serviceBehaviors><behaviorname="metadataBehavior"><serviceMetadatahttpGetEnabled="true"httpGetUrl="http://192.168.0.129:8070/Service1/metadata"/></behavior></serviceBehaviors></behaviors><bindings><wsDualHttpBinding><bindingname="BasicBinding"receiveTimeout="00:30:00"sendTimeout="00:30:00"maxReceivedMessageSize="2147483647"><readerQuotasmaxStringContentLength="2147483647"maxArrayLength="2147483647"/></binding></wsDualHttpBinding></bindings><services><servicebehaviorConfiguration="metadataBehavior"name="WCFDuplex.Service1"><endpointaddress="http://192.168.0.129:8070/Service1"binding="wsDualHttpBinding"bindingConfiguration="BasicBinding"name="TrialInfo"contract="WCFDuplex.IQQS"/></service></services></system.serviceModel></configuration>

客户端:publicpartialclassForm1:Form,QQService.IQQSCallback{publicvoidReceive(stringsenderName,stringmessage){this.listBox2.Items.Add(senderName+"说:"+message);}publicvoidReceiveWhisper(stringsenderName,stringmessage){this.listBox2.Items.Add(senderName+"悄悄对您说:"+message);}publicvoidUserEnter(string[]name){this.listBox1.Items.Add(name[0]);}publicvoidUserLeave(stringname){this.listBox1.Items.Remove(name[0]);}QQService.QQSClientclt=null;publicForm1(){InitializeComponent();InstanceContextins=newInstanceContext(this);clt=newQQService.QQSClient(ins);}privatevoidbutton1_Click(objectsender,EventArgse){string[]ss=clt.join(this.textBox1.Text);if(ss[0]=="已经有此用户"){MessageBox.Show("已经有此用户!");return;}this.button1.Enabled=false;this.textBox1.Enabled=false;this.Text="登陆成功";this.listBox1.Items.AddRange(ss);this.groupBox1.Enabled=true;}}

客户端配置文件:<?xmlversion="1.0"encoding="utf-8"?><configuration><startup><supportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.5.2"/></startup><system.serviceModel><bindings><wsDualHttpBinding><bindingname="TrialInfo"closeTimeout="00:01:00"openTimeout="00:01:00"receiveTimeout="00:10:00"sendTimeout="00:01:00"bypassProxyOnLocal="false"hostNameComparisonMode="StrongWildcard"maxBufferPoolSize="2147483647"maxReceivedMessageSize="2147483647"messageEncoding="Text"textEncoding="utf-8"useDefaultWebProxy="true"/></wsDualHttpBinding></bindings><client><endpointaddress="http://192.168.0.129:8070/Service1"binding="wsDualHttpBinding"bindingConfiguration="TrialInfo"contract="QQService.IQQS"name="TrialInfo"></endpoint></client></system.serviceModel></configuration>

但是我每次执行的时候就会报出异常:因为第一次学习WCF双工,请问下这个是什么情况,应该如何解决呢?

解决方案

解决方案二:
有没有人来帮帮忙啊
解决方案三:
客户端跟服务器端要同时运行,在服务器端要跟踪调试join方法一次,看看执行了哪些代码。至少你要在returnUserspeaklist.Keys.ToList();这条语句这里调试一次。

时间: 2024-10-15 01:46:12

菜鸟求助WCF双工的问题的相关文章

正则表达式-菜鸟求助:关于python的正则匹配问题?

问题描述 菜鸟求助:关于python的正则匹配问题? pattern = re.compile(word.join(['.?' '.?']))这个是什么意思啊?功能目的是什么啊?看了好几圈了,还是不懂,求大神帮忙 解决方案 给word字符串添加'.?.?',生成一个最终的字符串作为正则表达式的pattern 解决方案二: pattern 是正则匹配规则,你DEBUG看看pattern值是多少 就知道正则的匹配规则了

编程-java 菜鸟求助 求各路大神指教 九宫格如何填数? 需求如下

问题描述 java 菜鸟求助 求各路大神指教 九宫格如何填数? 需求如下 /** 打印一个 9*9 的九宫格 必须满足一下两个条件 条件1: 任意一行或者一列都满足9个不同的数字 条件2: 任意一个小9格正方形都满足9个不同的数字 思想: 通过设定满足条件 无限次循环生成任意数字的矩阵 直到满足后跳出循环 结果失败 */ 解决方案 package com; import java.util.Random; public class ShuDu { /** 存储数字的数组 / private st

jsp 弹窗-菜鸟求助:如何在JSP页面中弹出窗口

问题描述 菜鸟求助:如何在JSP页面中弹出窗口 从数据库中查询到了学生的基本信息,每条记录的后面有个"查看详细"的按钮,点击后弹出一个小窗口能将学生的信息显示出来,应该如何做?求各位大神帮忙,最好有个示例,不胜感激--

图片-Android屏幕适配问题,菜鸟求助

问题描述 Android屏幕适配问题,菜鸟求助 如题, 本人菜鸟不知道怎么屏幕适配呀, 我用的是demin建立了两个文件, 一个是(1280x720的),另外一个是1920x1080的. 在里面写的尺寸.因为我们美工给我的图片都是px的. 换算如下 解决方案 做android开发,开源嘛,满市场都是凌乱的机型,总少不了适配这样或那样的型号.在这里分享一下自己在开发中用到的方法. 首先要介绍一下drawable-mdpi.drawable-hdpi-1280x800.drawable-hdpi.这

windows编程-windows的API中有没有能够更改文件名字的函数?菜鸟求助!!!

问题描述 windows的API中有没有能够更改文件名字的函数?菜鸟求助!!! 有的话请高手说明一下用法.没有的话请高手介绍一下在windows编程中(我用的是c++)怎样实现更改一个文件的名字?谢谢了 解决方案 int rename ( const char * oldname, const char * newname ); 解决方案二: 使用脚本类东西很方便的, 解决方案三: 你可以在windowsAPI函数的外面套一层函数,比如 int 信息框( HWND hWnd,LPCTSTR lp

test-Java菜鸟求助,谢谢大家

问题描述 Java菜鸟求助,谢谢大家 package test; class Score{ private String name; private int score; Score(String name){ this.name=name; } Score(int score){ this.score=score; } Score(String name,int score){ this.name=name; this.score=score; } public boolean compare

菜鸟求助,一个关于正则表达式的问题

问题描述 菜鸟求助,一个关于正则表达式的问题 http://tieba.baidu.com/p/3061796036 因为包含html标签,所以显示出来总是有问题,这是在百度贴吧的连接,求大神帮帮忙 解决方案 1.zo*,我这样写是不是会重复匹配的只有'o'一个字符:zo* 会匹配这样的字符串: zo zoooo zooooooooooooooo ,明白? 2.String html = " example解决方案二: */是0-n个 相关文章 正则表达式-菜鸟求助:关于python的正则匹配问

菜鸟求助:Qt 运行过程中退出

问题描述 菜鸟求助:Qt 运行过程中退出 自己用Qt编写了一个计算的程序,当计算步骤少时,程序能正常运行(表明程序代码没有语法错误),但是步骤多了就运行卡死,表现在程序计算过程中突然退出,用Matlab能轻松做到的计算,在自己编的程序上面运行就那么慢.调试过程中发现有Out of memory 的错误, 但是感觉应该内存不会不够啊,还是我的代码在内存消耗上面有什么不合理的地方.请教各位高手!!

菜鸟求助 kindeditor 怎么删除服务器的图片

问题描述 菜鸟求助 kindeditor 怎么删除服务器的图片 如题 只要在富文本域上传的图片就算后来删除了 但还是上传到服务器上 能不能提交时只提交现有的图片 同时删除时怎么获取图片地址删除呢..