AndroidManifest.xml已经添加过权限了
package com.example.administrator.ffffff; import android.app.Activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; public class MainActivity extends Activity { EditText show; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show = (EditText)findViewById(R.id.show); new Thread() { public void run() { try { Socket socket = new Socket("192.168.1.102",30000);//这里连接超时 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = br.readLine(); show.setText("来自服务器的数据:" + line); br.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } }
//这个代码是运行在 Windows 上的 import java.util.concurrent.locks.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.*; import java.net.*; public class dd { public static void main(String[]args)throws IOException { ServerSocket ss = new ServerSocket(30000); while(true) { Socket s= ss.accept(); OutputStream os = s.getOutputStream(); os.write("您好,您收到了服务器的新年祝福!\n".getBytes("utf-8")); os.close(); ss.close(); } } }
发个截图来证明电脑IP地址没错
2
2
new Thread() { public void run() { try { Socket socket = new Socket("192.168.1.102",30000);//这里连接超时 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = br.readLine(); show.setText("来自服务器的数据:" + line); br.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start();
这段写的很有问题,你应该需要新建一个子线程,通过white(ture){
//监听能否有信息
}
你现在只监听一次,连接不上很正常。而且子线程你是不能更新ui的,所以不能调用setText方法,需要用handler处理
2
你现在只监听一次,连接不上很正常。而且子线程你是不能更新ui的,所以不能调用setText方法,需要用handler处理
这段代码是客户端,不是服务器!
另外,这段代码是照书打的,《疯狂Android讲义》第三版的565页
这个肯定是错的,android子线程是不能去更新ui的,除非用handler之类。这个例子本人没去敲过,本人感觉还是你的手机问题,你用模拟器试试
2
这个肯定是错的,android子线程是不能去更新ui的,除非用handler之类。这个例子本人没去敲过,本人感觉还是你的手机问题,你用模拟器试试
木有模拟器,就算模拟器好使了,最终也还是要解决真机才算解决问题。
你用模拟器可以保证你的android是连的到java端的socket的,但是你现在用真机可能不行,现在的问题可能在这。或你直接拿书的光盘里的代码运行一下。
2
你现在只监听一次,连接不上很正常。而且子线程你是不能更新ui的,所以不能调用setText方法,需要用handler处理
这段代码是客户端,不是服务器!
另外,这段代码是照书打的,《疯狂Android讲义》第三版的565页这个肯定是错的,android子线程是不能去更新ui的,除非用handler之类。这个例子本人没去敲过,本人感觉还是你的手机问题,你用模拟器试试
谁说子线程一定不能更新ui的
2
或你直接拿书的光盘里的代码运行一下。
各种编译错误,R文件都找不到了。先睡觉了,困死了。明天在 看看
r文件找不到 说明你的 布局和图片之类的 有叉叉 , 仔细检查
4
你现在只监听一次,连接不上很正常。而且子线程你是不能更新ui的,所以不能调用setText方法,需要用handler处理
这段代码是客户端,不是服务器!
另外,这段代码是照书打的,《疯狂Android讲义》第三版的565页这个肯定是错的,android子线程是不能去更新ui的,除非用handler之类。这个例子本人没去敲过,本人感觉还是你的手机问题,你用模拟器试试
谁说子线程一定不能更新ui的
请写一个子线程更新ui的代码给本人看看
2
2
你用模拟器可以保证你的android是连的到java端的socket的,但是你现在用真机可能不行,现在的问题可能在这。或你直接拿书的光盘里的代码运行一下。
谁说子线程一定不能更新ui的
问题解决了,不是代码的问题,是特么的的 Windows 防火墙没关闭。但是成功连接以后 Windows 服务器发生了个异常,这是怎么回事。代码还是上面的代码。
调用accept方法之前,socket已经被close了
2