android连接不上socket,关于socket通信的android与pc端连接,为什么我定义的socket是为空的,连接不上pc端...
服务器端代码:
package mytable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MyServer implements ActionListener {
/**
* 服务器端
* */
private Window window;
private ServerSocket server;
private static Socket socket;
private JButton button;
private static JTextArea area;
private JTextField field;
//private BufferedWriter writer;
private OutputStream writer;
private static BufferedReader reader;
// 存放TextField中的字符串
private static String fromClient;
public MyServer() {
window = new Window("服务器:");
button = window.getButton();
area = window.getJTextArea();
field = window.getTextField();
button.addActionListener(this);
try {
//监听端口5000
server = new ServerSocket(5000);
System.out.println("服务器已创建,正在等待客户端连接。。。");
socket = server.accept();
System.out.println("客户端已连接");
//打开输入输出流
writer = socket.getOutputStream();
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
socket.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException {
new MyServer();
// 创建线程去读取客户端发来的数据
new Thread(new Runnable() {
@Override
public void run() {
try {
while (socket != null) {
fromClient = reader.readLine();
area.append("客户端:" + fromClient + '\n');
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
reader.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}).start();
}
/**
* 按钮监听方法,点击按钮时触发该方法。
* */
@Override
public void actionPerformed(ActionEvent e) {
String me = field.getText().toString() + '\n';
area.append("服务器:" + me);
field.setText("");
try {
writer.write(me.getBytes("utf-8"));
//刷新输出流
writer.flush();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
try {
writer.close();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
}
}
}
客户端代码
package com.example.client;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.net.Socket;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
public EditText editText;
public Button button;
// 输出流
public BufferedReader in;
// 输入流
//private BufferedWriter out;
//输入流
//private InputStream in;
//输出流
public OutputStream out;
// 客户端socket
public Socket socket;
// 显示数据
public TextView textView;
// 用来存放要传递给客户端的数据
public static String data;
//handler发送处理消息
public Handler handler;
public String b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
button = (Button) findViewById(R.id.send);
textView = (TextView) findViewById(R.id.textView);
//设置textView可以滚动
textView.setMovementMethod(ScrollingMovementMethod.getInstance());
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
if(msg.what == 0x1314)
{
textView.append("服务器:" + b + '\n');
}
return true;
}
});
new Thread(new Runnable() {
@Override
public void run() {
try {
socket = new Socket("127.0.0.1", 5000);
Log.e("--->", "已发出链接请求");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = socket.getOutputStream();
while (socket != null) {
b = in.readLine();
//textView.append("服务器:" + b + '\n');
handler.sendEmptyMessage(0x1314);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
data = editText.getText().toString();
textView.append("客户端说:" + data + '\n');
editText.setText("");
try {
if (socket != null) {
out.write((data + '\n').getBytes("GBK"));
out.flush();
}
else if(socket==null)
Log.e("--->", "服务器未连接,无法获得输出流");
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
android连接不上socket,关于socket通信的android与pc端连接,为什么我定义的socket是为空的,连接不上pc端...相关推荐
- android应用组件安全,基于组件间通信的Android应用安全分析
Android application security analysis based on inter-component communication Huang Yanyi 1 黄炎裔(1994- ...
- Android利用Socket与硬件通信之智能家居APP
Android利用Socket与硬件通信之智能家居APP - JCLovebiancheng - 博客园 在socket使用时,可以用1024-65535的端口号
- python与android交互,Android客户端与Python服务器端的简单通信
最近在做一个APP,需要与服务器通信,一点一点的尝试,记录一下. 本文使用了OkHttp和Flask框架. Android客户端: 实现功能输入完点击OK按钮后会toast成功的信息. Python服 ...
- Socket 通信原理(Android客户端和服务器以TCPUDP方式互通)
ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教. 一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是So ...
- Android Wifi连接控制、TCP、UDP通信,6.0以上适配
本文章包含内容 Wifi连接控制.Wifi广播接收,适配了Android6.0以上的版本 Wifi下的TCP通信 Wifi下的UDP通信 Github项目地址 码云项目地址 最近公司要开发智能家居,A ...
- C# Socket实现聊天通信
C# Socket实现聊天通信 下面这个实例是一个完整的使用Socket实现的聊天(只限于局域网,如果能提供一个高权限的IP就可以实现类似QQ聊天),其中的原理是:首先开启服务端,打开侦听(任何端口为 ...
- asp.core api 通过socket和服务器通信发送udp_python socket之TCP/UDP
#coding=utf-8 # socket #网络中进程之间通信:网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应 ...
- asp.core api 通过socket和服务器通信发送udp_【网络通信】TCP的通信过程
本文主要介绍以下几个内容: 1.TCP.UDP.Socket分别是什么?有什么区别? 2.TCP的基本过程. 3.TCP三次握手建立连接. 4.TCP四次挥手断开连接. 5.常考查其他问题. 1.TC ...
- socket补充:通信循环、链接循环、远程操作及黏包现象
socket补充:通信循环.链接循环.远程操作及黏包现象 socket通信循环 server端: import socketphone = socket.socket(socket.AF_INET,s ...
- asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
最新文章
- RocketMQ Docker安装
- signature=8eba57874a1690f9fdaff3572c7cef5f,基于EFI固件文件系统的平台安全策略研究与实现...
- 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...
- while和for循环
- android shape的用法总结
- java如何禁用usb_IT技巧分享59: 如何禁用USB端口以及光驱来保证数据不被泄露
- visual设计的界面发布到iis上显示不一样_享声 SOUNDAWARE 发布可“全民HIFI“的网播一体机 A1...
- 用css3实现Social Media Buttons
- Q1:spring-boot中Controller路径无法被访问的问题
- c# webform ajax操作,C#-WebForm-AJAX阿贾克斯(一)基本格式
- ajax提交sql注入,Godontologico '/index_ajax.php' SQL注入漏洞
- 如何证明人的记忆力是无限的
- java代码混淆 源代码保护 代码逻辑混淆 代码加密 支持JDK16
- vue 图片拖拉转放大缩小组件
- App 测试工具大全,收藏这篇就够了
- String常用方法有哪些?在工作中使用过哪些?
- Mina MEID/GSM Activator 1.0 三网信号激活,支持12.5.3~14.7
- Swift语言难度大吗?适不适合零基础学习?
- TensorFlow实时任意风格迁移,送女朋友的创意礼物有了
- zk4元年拆解_减配实锤!Kobe4 开箱+拆解:你凭什么叫Protro?
热门文章
- linux兼容性,Atom 1.23发布:功能增强,兼容性更好
- spring mvc基本概念
- MySQL中exists与in的使用
- 软件测试员,你该如何快速提高自己的测试技术?
- 进入贝壳网_贝壳网app下载安装
- 6、kubernetes 核心技术-Pod
- python爬虫股票分析准不准_教你用Python爬虫股票评论,简单分析股民用户情绪
- Java基础笔记(入门,语法基础,流程控制,数组)
- Firefox 多版本共存
- Android 关于::app:clean :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE,引用jar冲突问题...