我在界面上用一个按钮的单击事件来创建一个socket,代码如下:sock = new Socket(tv_ip.getText().toString(), port);
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())), true);另外我用另一个按钮来发送数据,代码如下:if(sock.isConnected()){
if(!sock.isOutputShutdown()){
out.println(str_send);
tv_result.setText(str_send);
}
}但是只能发一次,必须再单击创建socket的按钮,才能再次发送。按道理,我是没有关闭socket连接的。由于对android的socket处理机制还不是很熟悉,还请各位前辈指教指教,怎么保持创建的socket,直到程序结束
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())), true);另外我用另一个按钮来发送数据,代码如下:if(sock.isConnected()){
if(!sock.isOutputShutdown()){
out.println(str_send);
tv_result.setText(str_send);
}
}但是只能发一次,必须再单击创建socket的按钮,才能再次发送。按道理,我是没有关闭socket连接的。由于对android的socket处理机制还不是很熟悉,还请各位前辈指教指教,怎么保持创建的socket,直到程序结束
解决方案 »
- Android 应用退出时如何清理缓存
- android程序换肤的一种思路的难关, 怎样去掉R类定义中的final限制符?
- 为何自动生成main.out.xml
- 求高手推荐几本Android开发的经典教材
- 如何把 v2.1的ExpandeView对应的dialog宽度变长?
- 关于自定义相机的疑问
- android 开发 求分析下这个数据库表结构,求点拨
- ExpandableListView里给child的每个item添加了ImageView。如何对imageview设置监听!
- 内部静态类是作什么用的?
- 本人小白一枚,在将system变成读写的时候出现问题
- 谁有android的视频教程分享一下
- Activitv 删除数据后重新显示数据
socket get了输入输出流,对应的流不能关闭,关闭了会导致socket失效,需要重新初始化,尤其在ssl连接时,效果会特别差。write out stream后 调用 outsteam.flush() 就行,别close
while(1)
{
SOCKET sockcln = accept(sockSrv, (sockaddr*)&addrClient, &len);
unsigned long IP = addrClient.sin_addr.S_un.S_addr;
printf("get connect request from IP:%d.%d.%d.%d\n", (IP<<24)>>24, (IP<<16)>>24, (IP<<8)>>24, IP>>24);
char recvBuf[100];
memset(recvBuf, 0, sizeof(recvBuf));
recv(sockcln, recvBuf, sizeof(recvBuf), 0);
parseMsg(recvBuf);
}
没有的哦,亲!我调试的时候,数据发完后,socket以及socket的isOutputShutdown标志都是开着的