android多线程socket编程
⑴ 自己写了一个Android的APP,想用socket连接服务器
最近我在在写一个APP,用到了socket,在自己电脑上搭建的服务器,具体过程: 用eclipse写Java代码,创建一个serversocket,用来监听客户端的请求; 客户端在发送数据前,首先创建一个Socket,然后直接请求服务器即可。自己写了一个Android的APP,想用socket连接服务器
⑵ 使用socket编程,实现一个多线程聊天程序,使用9977端口,要求服务端使用两个线程(一个接收,一个输出)
对于通信来说,不存在绝对的服务器和客户端,谁在等待别人来,谁就是服务器,谁主动去联系人,谁就是客户端。
所以。
你要想客户端接受消息,那在启动客户端的时候,在客户端程序里开始一个提供端口的Socket就可以了。
ServerSocket serverSocket = new ServerSocket(5000);
while (true) {
final Socket socket = serverSocket.accept();
new Thread() {
Socket mySocket = socket;
@Override
public void run() {
try {
System.out.println(mySocket);
InputStream is = mySocket.getInputStream();
byte[] bytes = new byte[1024];
int n = is.read(bytes);
System.out.println(new String(bytes, 0, n));
OutputStream os = mySocket.getOutputStream();
os.write(("server reply at time " + new Date()
.toString()).getBytes());
mySocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
⑶ android如何使用多线程及socket发送指令
1、后台服务是service,没有界面 2、主线程要给后台service传递一个对象可以使用通知也就是notifation 方法:在主线程生成一个通知管理器对象notifationmanager,把socket对象以通知消息的形式发送给后台service,详细的可以看看安卓巴士教程:http://www.apkbus.com/thread-463757-1-1.html
⑷ Android socket 开发,线程CPU占用过高
socket 和流操作使用完都需要关闭的,不然会一直占用资源
⑸ 如何用socket实现android手机与手机之间的通信
参考一般的JAVA的socket编程,如果通过手机网络,就不要使用UDP即可。
⑹ Android - Socket简单使用
ServerSocket类提供如下构造器:
当ServerSocket使用完毕,应使用 close() 方法来关闭此ServerSocket。通常情况下,服务器不应该只接收一个客户端请求,而应该不断接收来自客户端的请求,所以程序可以通过循环,不断调用ServerSocket的accept方法:
Socket 常用构造器
注:上面两个构造器指定远程主机时既可以使用InetAddress来指定,也可以直接使用String对象来指定远程IP。本地主机只有一个IP地址时,使用第一个方法更简单。
在与服务器进行通讯的时候,无法判断远程的服务器是否断开连接。如果使用 OutputStream 发送数据则会影响正常的数据发送(无法区分)。所以就引入了一个心跳机制。
心跳机制实现,使用 Socket.sendUrgentData() 方法发送一个字节流数据(紧急数据)。可以通过判断服务端的 OOBINLINE 属性是否打开,来确定是否断开连接;
setSoTimeout()理解 :设置超时时间;例如:设置为2s,如果阻塞的时间>2s ,那么就会报错。
⑺ Android 基于UDP的Socket通信
1、连接DatagramSocket的服务端(ip和port):开启异步线程和socket
2、发送数据(DatagramPacket):异步
3、接收数据(DatagramPacket):注意连接状态,异步读取
4、关闭连接:关闭DatagramSocket和对应线程
1、异常:android.os.NetworkOnMainThreadException。 socket需要在线程中使用
2、前后端统一传输或者接收协议 [requestcode size d1 d2 d3 ... ],在解析时候用得到
3、实施监控socket的连接状态,还是用心跳包发过去,然后返回数据,一段时间没有的话则代表socket连接失败。
4、注意receive接收数据后的有效长度(一个是预存的buffer,一个是有效结果buffer)
5、客户端连上去后不知道为何一定要先发送一次,才能接收?
6、UDP不安全,有长度限制64K
2019 (* ̄(oo) ̄) 诸事顺利!