【急】c#服务器用套接字与android服务端互通训,要双向的,我自己写了一个,不成功,求例子,求指导,急啊
2014-10-21 23:40
302 查看
============问题描述============
c#服务端:
套接字我是第一次写,好多都不懂的,而且还是夸平台的,尼玛,求救啊,有列子看看也好
============解决方案1============
Java端两个问题
1. static Socket client; 在实例方法中使用并且没有做同步, 去掉static,否则多线程发送就全乱了
2.服务端因为你已经用了独立线程处理,所以写个读用阻塞执行不会有什么影响,客户端发送时直接在主线程中同步发送再读取就不太可取了,发送到接收,你用的是Thread.sleep(1000); 这个时间你是如何确定的?
C#中通常的做法是异步发送和读取BeginSend(datas, OnReadReplayCallback, stateObj)
void OnReadReplayCallback(IAsyncResult asyncResult)
{
while(读到数据) 写入缓存
if(缓存不为空) 触发接受到数据的事件或委托
}
这样程序就不用阻塞了,并且也会按照顺序正确执行
上面只是供参考的思路
c#服务端:
服务端 public class SocketClient { static Socket client; public SocketClient(String site, int port) { try { client = new Socket(site, port); } catch (Exception e) { Log.i("t460470591", "error"); e.printStackTrace(); } } public String sendMsg(String msg) { try { PrintWriter out; out = new PrintWriter(new BufferedWriter(new OutputStreamWriter (client.getOutputStream())), true); out.println(msg);//发送数据到服务端 Thread.sleep(1000);//没做while循环接收服务器的数据,我就直接睡眠一下,只接收一次数据 InputStream inputStream= client.getInputStream(); //获取套接字的输入流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i=-1; while((i=inputStream.read())!=-1){ //我这里DEbug发现,每次都有数据的,我就跟踪while,一个F6,F6按, //按着按着就在这里卡死了...不是我机子,我也不懂怎么弄,反正数据就回不来,程序不是错处, //而且直接就不能调试了,估计是还在等在数据 baos.write(i); } Log.i("t460470591", baos.toString());//这里获取接收的值,但是程序阻塞在这里了 return baos.toString(); } catch (Exception e) { e.printStackTrace(); Log.i("t460470591",e.getMessage()+ "a"); } return ""; }
套接字我是第一次写,好多都不懂的,而且还是夸平台的,尼玛,求救啊,有列子看看也好
============解决方案1============
Java端两个问题
1. static Socket client; 在实例方法中使用并且没有做同步, 去掉static,否则多线程发送就全乱了
2.服务端因为你已经用了独立线程处理,所以写个读用阻塞执行不会有什么影响,客户端发送时直接在主线程中同步发送再读取就不太可取了,发送到接收,你用的是Thread.sleep(1000); 这个时间你是如何确定的?
C#中通常的做法是异步发送和读取BeginSend(datas, OnReadReplayCallback, stateObj)
void OnReadReplayCallback(IAsyncResult asyncResult)
{
while(读到数据) 写入缓存
if(缓存不为空) 触发接受到数据的事件或委托
}
这样程序就不用阻塞了,并且也会按照顺序正确执行
上面只是供参考的思路
相关文章推荐
- 【急】c#服务器用套接字与android服务端互通训,要双向的,我自己写了一个,不成功,求例子,求指导,急啊
- 【急】c#服务器用套接字与android服务端互通训,要双向的,我自己写了一个,不成功,求例子,求指导,急啊
- 客户端与服务器SSL双向认证(客户端:Android-服务端:vc)-含源码
- 我现在在做一个app,里面要有聊天的功能,但是我在网上找了好多例子,我都没有运行成功,希望路过的大神能给我点指导或者源码也行
- 收藏——在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- 一个数据连接例子c#
- [转] 学习C#静态函数及变量的一个精典例子
- C# Remoting的一个简单例子
- C#-对称加密的一个例子
- 一个很简单的C#例子,给网友解答的,总觉得应该有更简单的方法
- 一个用eXosip实现的UAC和UAS的例子(调试成功)
- 一个C#写单元测试的例子(结合DAAB)
- 写一个简单的C#反射的例子(附有源码)
- 看了Patchou的示例,用C#写了一个MSNPlus的插件成功了
- 今天没事,看到一个用C#开发OutLook插件的例子,顺便自己做了一个
- 一个字符串的加密和解密的例子c#
- CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)
- C# 一个多线程操作控件的例子.#######
- 一个验证码的例子(asp.net c#)
- (转贴)一个C#动态编译的小例子