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
