我是菜鸟。今天遇到一个问题。
我有一个WinForm的Socket的例子,一个服务端一个客户端。
我把客户端改成了Web Service 的形式,但是不能返回接过了。
Web Service 的更改后代码如下
private IPAddress hostIPAddress;
private IPEndPoint Server1;
SqlConnection strconn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionstring"]);
private Socket sock;
private const int BufferSize=2048;
private byte[] buffer=new byte[BufferSize];
private static ManualResetEvent connectDone=new ManualResetEvent(false);
private static ManualResetEvent sendDone=new ManualResetEvent(false);
public string Receive="没有接收";
public string Err="";
public string WZ=""; public string socket()
{
string link=this.Link();
}
//连接服务器
private string Link()
{
try
{
hostIPAddress=IPAddress.Parse("127.0.0.1");
}
catch
{
Err="错误001:95";
return "错误";
}
try
{
Server1=new IPEndPoint(hostIPAddress,Int32.Parse("7000"));
sock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sock.BeginConnect(Server1,new AsyncCallback(this.ConnectCallBack),sock);
}
catch
{
Err="错误002:103";
return "错误";
}
return "OK";
}
//连接函数
public void ConnectCallBack(IAsyncResult ar)
{
try
{
Socket client=(Socket)ar.AsyncState; //获取状态
client.EndConnect(ar);
try
{
byte[] byteData=Encoding.ASCII.GetBytes("0015001000010100");
sock.BeginSend(byteData,0,byteData.Length,0,new AsyncCallback(SendCallBack),sock);
}
catch
{
Err="错误003:128";//return "错误";
} Receive="与主机127.0.0.1端口7000连接成功";
Thread thread=new Thread(new ThreadStart(ThreadProc));
thread.Start(); //开始接收数据线程
connectDone.Set(); //将指定事件的状态设置为终止。
}
catch
{
Err="错误004:139";//return "错误";
} // return "OK";
} 这是部分代码;
ConnectCallBack() 函数好像被调用了,但是好像调用了部分。
byte[] byteData=Encoding.ASCII.GetBytes("0015001000010100");
sock.BeginSend(byteData,0,byteData.Length,0,new AsyncCallback(SendCallBack),sock);
这些起到作用了 下面那些就没有起到作用:
Receive="与主机127.0.0.1端口7000连接成功";
那位高手教教小弟,实在不知道怎么回事。拜谢了!
我的QQ148390950 注明 csdn
吃完饭回来看帖。拜谢了!
我有一个WinForm的Socket的例子,一个服务端一个客户端。
我把客户端改成了Web Service 的形式,但是不能返回接过了。
Web Service 的更改后代码如下
private IPAddress hostIPAddress;
private IPEndPoint Server1;
SqlConnection strconn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionstring"]);
private Socket sock;
private const int BufferSize=2048;
private byte[] buffer=new byte[BufferSize];
private static ManualResetEvent connectDone=new ManualResetEvent(false);
private static ManualResetEvent sendDone=new ManualResetEvent(false);
public string Receive="没有接收";
public string Err="";
public string WZ=""; public string socket()
{
string link=this.Link();
}
//连接服务器
private string Link()
{
try
{
hostIPAddress=IPAddress.Parse("127.0.0.1");
}
catch
{
Err="错误001:95";
return "错误";
}
try
{
Server1=new IPEndPoint(hostIPAddress,Int32.Parse("7000"));
sock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sock.BeginConnect(Server1,new AsyncCallback(this.ConnectCallBack),sock);
}
catch
{
Err="错误002:103";
return "错误";
}
return "OK";
}
//连接函数
public void ConnectCallBack(IAsyncResult ar)
{
try
{
Socket client=(Socket)ar.AsyncState; //获取状态
client.EndConnect(ar);
try
{
byte[] byteData=Encoding.ASCII.GetBytes("0015001000010100");
sock.BeginSend(byteData,0,byteData.Length,0,new AsyncCallback(SendCallBack),sock);
}
catch
{
Err="错误003:128";//return "错误";
} Receive="与主机127.0.0.1端口7000连接成功";
Thread thread=new Thread(new ThreadStart(ThreadProc));
thread.Start(); //开始接收数据线程
connectDone.Set(); //将指定事件的状态设置为终止。
}
catch
{
Err="错误004:139";//return "错误";
} // return "OK";
} 这是部分代码;
ConnectCallBack() 函数好像被调用了,但是好像调用了部分。
byte[] byteData=Encoding.ASCII.GetBytes("0015001000010100");
sock.BeginSend(byteData,0,byteData.Length,0,new AsyncCallback(SendCallBack),sock);
这些起到作用了 下面那些就没有起到作用:
Receive="与主机127.0.0.1端口7000连接成功";
那位高手教教小弟,实在不知道怎么回事。拜谢了!
我的QQ148390950 注明 csdn
吃完饭回来看帖。拜谢了!
解决方案 »
- 做一个flash走势图,那位大侠做过?谢谢
- 散分咯,大家来讨论下这些面试题,都是本人最近面试遇见的,不断更新中……
- 自定义表单制作
- 怎么实现asp.net web 条码打印 能动态传入名称和编码
- gridView的列表头居中问题
- 后一个页面如何发送事件给前一个页面
- 竹子,你这么活跃,,我问你一个问题好不?
- freetextbox的按纽图片无法显示在哪里修改路径?还有就是1。6版怎么用源程序程序来调试呢?
- 如何将方法作为一个参数传递?(参数类型非委托类型)
- 兄弟们,帮帮忙吧,文件上传下载的 问题
- 请问petshop3.0为什么不能调试啊
- 请问在新建网站时出现的 asp.net网站 和asp.net web 服务 及 空网站 有何区别?
你说,Receive="与主机127.0.0.1端口7000连接成功";
你怎么判断这些没起作用呢?
有可能是有异常被你catch住了,而connect根本就没建立起来。
本来是有返回值的 我在某个地方做的给一个全局变量Receive赋值,然后运行WebService 看有没有返回,结果返回默认值。下面是那个服务函数,本来用返回值测试过。
public string socket()
{
string link=this.Link();
}