服务器端代码:

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端...相关推荐

  1. android应用组件安全,基于组件间通信的Android应用安全分析

    Android application security analysis based on inter-component communication Huang Yanyi 1 黄炎裔(1994- ...

  2. Android利用Socket与硬件通信之智能家居APP

    Android利用Socket与硬件通信之智能家居APP - JCLovebiancheng - 博客园 在socket使用时,可以用1024-65535的端口号

  3. python与android交互,Android客户端与Python服务器端的简单通信

    最近在做一个APP,需要与服务器通信,一点一点的尝试,记录一下. 本文使用了OkHttp和Flask框架. Android客户端: 实现功能输入完点击OK按钮后会toast成功的信息. Python服 ...

  4. Socket 通信原理(Android客户端和服务器以TCPUDP方式互通)

     ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教. 一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是So ...

  5. Android Wifi连接控制、TCP、UDP通信,6.0以上适配

    本文章包含内容 Wifi连接控制.Wifi广播接收,适配了Android6.0以上的版本 Wifi下的TCP通信 Wifi下的UDP通信 Github项目地址 码云项目地址 最近公司要开发智能家居,A ...

  6. C# Socket实现聊天通信

    C# Socket实现聊天通信 下面这个实例是一个完整的使用Socket实现的聊天(只限于局域网,如果能提供一个高权限的IP就可以实现类似QQ聊天),其中的原理是:首先开启服务端,打开侦听(任何端口为 ...

  7. asp.core api 通过socket和服务器通信发送udp_python socket之TCP/UDP

    #coding=utf-8 # socket #网络中进程之间通信:网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应 ...

  8. asp.core api 通过socket和服务器通信发送udp_【网络通信】TCP的通信过程

    本文主要介绍以下几个内容: 1.TCP.UDP.Socket分别是什么?有什么区别? 2.TCP的基本过程. 3.TCP三次握手建立连接. 4.TCP四次挥手断开连接. 5.常考查其他问题. 1.TC ...

  9. socket补充:通信循环、链接循环、远程操作及黏包现象

    socket补充:通信循环.链接循环.远程操作及黏包现象 socket通信循环 server端: import socketphone = socket.socket(socket.AF_INET,s ...

  10. asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

最新文章

  1. RocketMQ Docker安装
  2. signature=8eba57874a1690f9fdaff3572c7cef5f,基于EFI固件文件系统的平台安全策略研究与实现...
  3. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...
  4. while和for循环
  5. android shape的用法总结
  6. java如何禁用usb_IT技巧分享59: 如何禁用USB端口以及光驱来保证数据不被泄露
  7. visual设计的界面发布到iis上显示不一样_享声 SOUNDAWARE 发布可“全民HIFI“的网播一体机 A1...
  8. 用css3实现Social Media Buttons
  9. Q1:spring-boot中Controller路径无法被访问的问题
  10. c# webform ajax操作,C#-WebForm-AJAX阿贾克斯(一)基本格式
  11. ajax提交sql注入,Godontologico '/index_ajax.php' SQL注入漏洞
  12. 如何证明人的记忆力是无限的
  13. java代码混淆 源代码保护 代码逻辑混淆 代码加密 支持JDK16
  14. vue 图片拖拉转放大缩小组件
  15. App 测试工具大全,收藏这篇就够了
  16. String常用方法有哪些?在工作中使用过哪些?
  17. Mina MEID/GSM Activator 1.0 三网信号激活,支持12.5.3~14.7
  18. Swift语言难度大吗?适不适合零基础学习?
  19. TensorFlow实时任意风格迁移,送女朋友的创意礼物有了
  20. zk4元年拆解_减配实锤!Kobe4 开箱+拆解:你凭什么叫Protro?

热门文章

  1. linux兼容性,Atom 1.23发布:功能增强,兼容性更好
  2. spring mvc基本概念
  3. MySQL中exists与in的使用
  4. 软件测试员,你该如何快速提高自己的测试技术?
  5. 进入贝壳网_贝壳网app下载安装
  6. 6、kubernetes 核心技术-Pod
  7. python爬虫股票分析准不准_教你用Python爬虫股票评论,简单分析股民用户情绪
  8. Java基础笔记(入门,语法基础,流程控制,数组)
  9. Firefox 多版本共存
  10. Android 关于::app:clean :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE,引用jar冲突问题...