安卓(使用ADT)与C#建立TCP连接 但是死活就是连不上

问题描述

安卓(使用ADT)与C#建立TCP连接 但是死活就是连不上

C#代码.........................
IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
TcpListener listener = new TcpListener(ip, 8500);

        listener.Start();

安卓代码...........
Button login=(Button)findViewById(R.id.button1);
login.setOnClickListener(new OnClickListener(){
public void onClick(View v){
try {
Socket socket=new Socket("127.0.0.1",8500);
} catch (UnknownHostException e) {

                e.printStackTrace();
            } catch (IOException e) {

                e.printStackTrace();
            }
        }
    });
    安卓端就是点击一个按钮之后就与 127, 0, 0, 1 ,8500进行连接  但是运行之后发现用netstat -a命令查询发现8500还是LISTENING而不是ESTABLISHED请问我这是怎么回事

解决方案

Android中UI线程上不能进行网络操作,你最好把new Socket()这条语句放在一个线程中。
你检查一下Logcat的信息,是不是抛出IO异常了,如果是,那就把Socket的操作都放到线程中,然后还要看看Manifest中是不是加入了访问网络的权限。在就要检查一下ip是不是正确,端口是否被占用。
如果ip正确,端口没被占用,Android加入了访问网络的权限,网络操作在线程中完成,那肯定可以建立连接。

解决方案二:

Android的UI线程不能网络操作,要么改sdk版本,要么把网络操作放到一个线程中,另外确定绑定成功了。。

时间: 2024-08-31 12:15:50

安卓(使用ADT)与C#建立TCP连接 但是死活就是连不上的相关文章

安卓通讯-安卓(使用ADT)与C#建立TCP连接(我只要安卓端的代码 并且能连接就行不奢望别的)

问题描述 安卓(使用ADT)与C#建立TCP连接(我只要安卓端的代码 并且能连接就行不奢望别的) 只要cmd里一查看显示ESTABLISHED我就心满意足了 能给个安卓段代码吗 整个程序就一个按钮 点完按钮就与127.0.0.1,8500进行连接 只要能连接上就行 而且我只是个学生 我不能像你们那种真正的技术大牛一样 从一堆翔一样的代码里挑出和金子一样精炼的代码 只求有关这个程序的代码 谢谢了 解决方案 这个要取决于你的C#端怎么写.除非你的android端使用诸如http一类的标准协议.你光说

erlang-Erlang 建立TCP连接后,怎么样从返回的Socket获取客户端ip和端口?

问题描述 Erlang 建立TCP连接后,怎么样从返回的Socket获取客户端ip和端口? 代码如下,服务端在2345端口监听,accept到客户端连接后,返回{ok, Socket}. start() -> {ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]), {ok, Socket} = gen_tcp:accept(Listen). 问题是在成功accep

《Linux高性能服务器编程》——3.3 TCP连接的建立和关闭

3.3 TCP连接的建立和关闭 本节我们讨论建立和关闭TCP连接的过程. 3.3.1 使用tcpdump观察TCP连接的建立和关闭 首先从ernest-laptop上执行telnet命令登录Kongming20的80端口,然后抓取这一过程中客户端和服务器交换的TCP报文段.具体操作过程如下: $ sudo tcpdump -i eth0 –nt '(src 192.168.1.109 and dst 192.168.1.108) or (src 192.168.1.108 and dst 192

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.6 TCP连接的建立和终止

2.6 TCP连接的建立和终止 为帮助大家理解connect.accept和close这3个函数并使用netstat程序调试TCP应用,我们必须了解TCP连接如何建立和终止,并掌握TCP的状态转换图. 2.6.1 三路握手建立一个TCP连接时会发生下述情形. (1)服务器必须准备好接受外来的连接.这通常通过调用socket.bind和listen这3个函数来完成,我们称之为被动打开(passive open). (2)客户通过调用connect发起主动打开(active open).这导致客户T

如何干掉一条tcp 连接(活跃/非活跃)

如何干掉一条tcp 连接(活跃/非活跃) 背景 最近在测试环境部署服务的时候老是会有端口被占用情况用netstat/ss 查看后发现端口一直被占用 同另外一个ip 建立了tcp 连接,类似于这样: ESTAB 0 0 192.168.103.169:12345 192.168.103.12:10261 当然这个问题也不是最近才遇到,之前也遇到过,不过之前都是很快这个连接就自动消失,我就可以欢快 的使用我自己喜欢的12345 端口,无奈这次一直连续好几天这个连接一直存在导致我一直无法使用这个端口.

TCP连接状态详解及TIME_WAIT过多的解决方法

  TIME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间(后有MSL的解释),进入CLOSED状态. 下图是以客户端主动关闭连接为例,说明这一过程的.   TIME_WAIT状态存在的理由 ---------------------------- TCP/IP协议就是这样设计的,是不可避

常用类之TCP连接类-socket编程_C#教程

tcp一般用于维持一个可信任的连接,比起udp更为安全可靠,在vs.net,分别有tcpclient和udpclient以及tcplistener,一般开发中基本可以满足需要,但是这个有个很大的弊端,对于维持一个时间较长的,相互交互的来说,数据处理不是很明朗,vs/net中还有一个socket类,用他来做一个客户/服务器段,同时在接发数据的时候,能相互独立,这需要一个异步通讯过程 先实现服务器段: using System; using System.Net; using System.Net.

tcpdaemon —— 特定进程模型下的TCP连接管理

tcpdaemon 详细介绍 tcpdaemon ========= 0.快速开始 老师交给小明一个开发任务,实现一个TCP网络迭代并发服务器,用于回射任何接收到的通讯数据.小明很懒,他在开源中国项目库里搜到了开源库tcpdaemon来帮助他快速完成任务.首先他安装好tcpdaemon,然后写了一个C程序文件test_callback_echo.c $ vi test_callback_echo.c #include "tcpdaemon.h" _WINDLL_FUNC int tcp

tcp连接的几种状态及连接状态详解

TCP连接示意图如下 通常情况下,一个正常的TCP连接,都会有三个阶段:     TCP三次握手;    数据传送;    TCP四次挥手 里面的几个概念:     SYN: (同步序列编号,Synchronize Sequence Numbers)    ACK: (确认编号,Acknowledgement Number)    FIN: (结束标志,FINish) I. TCP三次握手 客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)服务端接受到客户端的创建请求后,返回两个信息: