当前位置:首页 » 安卓系统 » androidsocket代理服务器

androidsocket代理服务器

发布时间: 2022-08-06 12:37:33

❶ 安卓基于socket的服务器通信为什么不可以

1. PC服务器启用ServerSocket
两个通信实体在建立虚拟链路之前,需要有一方先准备好,主动接受来自其他通信实体的连接请求。
使用ServerSocket对象监听来自客户端的Socket连接。
//创建ServerSocket对象

ServerSocket ss = new ServerSocket(30000);
//监听来自客户端的请求
while(true){
Socket s = ss.accept();

}

如果没有连接,则将一直处于等待状态。当接收到连接请求后,获取消息到输入流,并保存到文件。
//接收客户端消息

BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str;

BufferedWriter bw = new BufferedWriter(new FileWriter("D:/ApInfo"+ (i++) +".txt"));
while ((str = in.readLine()) != null) {
System.out.println(str);
bw.write(str);
bw.newLine();
}

2. Android终端使用Socket通信
客户端使用Socket的构造器连接服务器,指定服务器IP和端口号就可以了。
Socket s = new Socket(“192.168.1.100”, 30000);
这样服务器端的accept()方法就得到响应,从而向下执行,服务器端和客户端就形成了一对互相连接的Socket。再进行通信时就没有服务器和客户端之分了,都是通过输入输出流进行通信。
详细步骤:
采用Handler和TimerTask来定时扫描AP信息并发送给服务器端。TimerTask规定了到达指定的时间所要进行的任务。
TimerTask task = new TimerTask(){

public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}

};

handler传递message内容:
Handler handler = new Handler(){

public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 执行定时器时间到了之后由handler传递的任务
break;
}
super.handleMessage(msg);
}

}
接下来扫描AP信息并发送给服务器端,然后将结果保存。
WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
mWifiList = wifiManager.getScanResults();

由WifiManager说明可知,它可以用于处理已配置的网络,当前连接的网络及AP信息的扫描等情况。
向服务器发送消息:
socket = new Socket("192.168.1.211",30000);
//向服务器端发送消息
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);

其中message为获取的AP信息,测试收到的信息格式为:
SSID: ICIS_LAB, BSSID: 1c:af:f7:9a:65:e4, capabilities: [WPA-PSK-TKIP+CCMP], level: -80,frequency: 2437

❷ 自己写了一个Android的APP,想用socket连接服务器

最近我在在写一个APP,用到了socket,在自己电脑上搭建的服务器,具体过程: 用eclipse写Java代码,创建一个serversocket,用来监听客户端的请求; 客户端在发送数据前,首先创建一个Socket,然后直接请求服务器即可。自己写了一个Android的APP,想用socket连接服务器

❸ android socket 服务端问题

最近刚学习了android socket
根据我的理解以及参考到的一些代码,要实现点对点传输数据,向指定客户端传信息,的确就是通过内存上保存的socket。
你所担心的上万个客户端同时连接,是不应该发生在用手机作为服务器的情况下的,不然就是设计错误。(就是如果设计一个需要响应上万连接的话,服务器就不应该用手机)。
等待连接后无响应大概是你实现的有问题,等待连接不要把主线程给block住了。

❹ android 的 Socket 和服务器ServerSocket 一直无法连接

你可能是这个问题;Android4.0版本以上不能在主线程中访问socket的解决办法
在oncreate方法中加入
if (Build.VERSION.SDK_INT >= 11) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads ().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
}

❺ Android socket 连不上服务器

NetworkOnMainThreadException 你的网络请求应该放在一个单独的线程中去执行,不能放在mainThread 也就是ui线程。

❻ android serversocket 服务器该怎么搭建

服务器端是需要用ServerSocket的:

1创建ServerSocket和Socket
2打开连接到Socket的输入输出流
3按照协议进行Socket进行读写操作
4关闭输入输出流,关闭Socket

❼ android socket有几种方法

/***第一种:客户端Socket通过构造方法连接服务器***/
//客户端Socket可以通过指定IP地址或域名两种方式来连接服务器端,实际最终都是通过IP地址来连接服务器
//新建一个Socket,指定其IP地址及端口号
Socket socket = new Socket("192.168.0.7",80);
/***Socket 客户端 一些常用设置***/
//客户端socket在接收数据时,有两种超时:1.连接服务器超时,即连接超时;2.连接服务器成功后,接收服务器数据超时,即接收超时
//*设置socket 读取数据流的超时时间
socket.setSoTimeout(5000);
//发送数据包,默认为false,即客户端发送数据采用Nagle算法
//但是对于实时交互性高的程序,建议其改为true,即关闭Nagle算法,客户端每发送一次数据,无论数据包大小都会将这些数据发送出去
socket.setTcpNoDelay(true);
//设置客户端socket关闭时,close()方法起作用时延迟1分钟关闭,如果1分钟内尽量将未发送的数据包发送出去
socket.setSoLinger(true, 60);
//设置输出流的发送缓冲区大小,默认是8KB,即8096字节
socket.setSendBufferSize(8096);
//设置输入流的接收缓冲区大小,默认是8KB,即8096字节
socket.setReceiveBufferSize(8096);
//作用:每隔一段时间检查服务器是否处于活动状态,如果服务器端长时间没响应,自动关闭客户端socket
//防止服务器端无效时,客户端长时间处于连接状态
socket.setKeepAlive(true);
/*** Socket客户端向服务器端发送数据 ****/
//客户端向服务器端发送数据,获取客户端向服务器端输出流
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
//代表可以立即向服务器端发送单字节数据
socket.setOOBInline(true);
//数据不经过输出缓冲区,立即发送
socket.sendUrgentData(65);//"A"
//向服务器端写数据,写入一个缓冲区
//注:此处字符串最后必须包含“\r\n\r\n”,告诉服务器HTTP头已经结束,可以处理数据,否则会造成下面的读取数据出现阻塞
//在write()方法中可以定义规则,与后台匹配来识别相应的功能,例如登录Login()方法,可以写为write("Login|test,123 \r\n\r\n"),供后台识别;
bw.write("Login|test,123 \r\n\r\n");
//发送缓冲区中数据,必须有
bw.flush();

/*** Socket客户端读取服务器端响应数据 ****/
//socket.isConnected代表是否连接成功过
if((socket.isConnected() == true) && (socket.isClosed() == false)){//判断Socket是否处于连接状态
//客户端接收服务器端的响应,读取服务器端向客户端的输入流
InputStream is = socket.getInputStream();
//缓冲区
byte[] buffer = new byte[is.available()];
//读取缓冲区
is.read(buffer);
//转换为字符串
String responseInfo = new String(buffer);
//日志中输出
Log.i("TEST", responseInfo);
} //关闭网络
socket.close();
/***第二种:通过connect方法连接服务器***/
Socket socket_other = new Socket();
//使用默认的连接超时
socket_other.connect(new InetSocketAddress("192.168.0.7",80));
//连接超时2s
socket_other.connect(new InetSocketAddress("192.168.0.7",80),2000);
//关闭socket
socket_other.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

❽ Android socket连接服务器未响应

你确定你的电脑的8080这个端口没有被其他程序占用,或者你的服务器程序启动了吗,服务器程序要在客户端程序启动前启动,并且服务器要一值监听你设置的这个端口。你上面的程序别忘了关闭IO流和socket。

❾ android 用socket连接服务器,报出异常怎么解决

晕,楼主你是不是不理解异常是什么意思啊...异常就是程序执行遇到错误了。捕获之后,如果是已知错误,就想办法处理掉,继续运行;要不就直接把错误信息打印到Log里,退出程序。这样捕获了,又不处理,接着运行自然会出错的。

热点内容
python和php哪个好 发布:2024-05-10 13:32:41 浏览:729
android长按关机 发布:2024-05-10 13:21:54 浏览:13
城堡模组小本的模组密码是什么 发布:2024-05-10 13:21:13 浏览:304
旧机照片传新手机怎么弄安卓苹果 发布:2024-05-10 13:16:15 浏览:227
设置密码英文是什么 发布:2024-05-10 13:15:19 浏览:647
魅族安卓60怎么下载光遇 发布:2024-05-10 13:10:52 浏览:841
硬盘存储系统 发布:2024-05-10 12:39:51 浏览:244
数据库审计系统报价 发布:2024-05-10 12:39:50 浏览:279
乘法多种算法 发布:2024-05-10 12:26:44 浏览:782
ps2021怎么存储为web格式 发布:2024-05-10 12:26:41 浏览:665