(原创)Socket编程,手机客户端不…

这两天在学习socket网络编程方面的知识,本来再java上运行的测试的好好的,但到了android上,客户端老是连接不上,在网上看了许多资料,总结了手机客户端连接PC服务端的条件:
1、 P C 和手机要在同一个网络内,比如无线路由器,手机用wifi连接路由,pc也连接路由,cmd命令查看下PC的ip地址,请确保你的IP是PC的IP,把你PC防火墙关掉,socket连接最好用
2、android4.0版本以上的,网络连接代码不能写在主线程中,必须新建一个线程。
3、 在Manifest.xml文件当中,需要对互联网的访问进行授权
<uses-permission  android:name="android.permission.INTERNET"/>

PC服务端:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;


public class Server {
public static void main(String[] args){
ServerSocket serverSocket = null;
Socket socket = null;
DataInputStream in = null;
DataOutputStream out = null;
try {
serverSocket = new ServerSocket(12345);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
while(true){
socket = serverSocket.accept();
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
out.writeUTF(in.readUTF()+"\n儿子乖");
out.close();
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

android客户端:
package com.example.socketdemo;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
public static TextView textView;
public static Button button;
public static Handler handler = new Handler();
public static String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textview);
button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
thread.start();
}
});
textView.setText(text);
}
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Socket socket;
DataInputStream in;
DataOutputStream out;
try {
socket = new Socket("192.168.1.104", 12345);
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("爸爸");
text = in.readUTF();
textView.post(new Runnable() {
@Override
public void run() {
textView.setText(text);
}
});
} catch (Exception e) {
Toast.makeText(getApplicationContext(),"与服务器断开连接", Toast.LENGTH_LONG).show();
}
}
});
}    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1。这个都是自己慢慢摸索的。mono for andriod ,资料真的太少了。 2.正在做安卓手机的项目。选择这条路都不知道能不能坚持下去。 3.希望有同样迷惑的人,照亮一点前面的路,也希望能照亮自己。 4.下面的代码运行环境 VS2012 + mono for andriod 4.8 java -sdk 与 mono for andriod 4.8 见下面的网盘 希望到时,这个网盘没有被封。 http://pan.baidu.com/s/1sjqMsqT 安装教程 http://www.51mono.com/article/show/172 http://www.51mono.com/article/show/96 安卓模拟器,推荐使用 Genymotion。 具体的安装教程,就请网上找吧。我实在没有力气了。 不过在模拟时,还是有点不够爽。 由于是 mono for andriod 专业破解版,所以可以直接使用 真机运行的。 我就是用 小米3 来运行。问题比较少。 另外要吐槽一下的是,开发这个手机APP,真的很耗内存。为此我不得不把我的老爷机换了4G的内存条。 由于是老爷机,内存条好贵的呀。 5,windows 开发环境 是 win8.1. 32位。 6.希望我啰嗦的这么多信息对你有用。 7.下面是正题了。 这个压缩包中,包含 C#写的服务端。 和 mono for andriod ---c# 写的手机客户端。 实现简单的 Socket --TCP/IP 通信。 其实,使用的类 和语法代码与 普通PC机的一样。但 手机客户端,还是有点点区别。 在pc客户端中,使用线程收取 信息,然后打印到UI控件上,是使用委托进行。 在手机APP中,有一个专门的方法来把这个信息寄送到 UI线程,然后在 UI控件上进行显示。 在例子中,有体现。 8.好了,就这么多了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值