文档章节

手机与pc服务器通信那点事

Android攻城狮
 Android攻城狮
发布于 2015/08/19 14:44
字数 337
阅读 22
收藏 0

1. [代码]手机客户端 


package com.newsocket;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.*;
public class Activity01 extends Activity {
    private final String DEBUG_TAG = "Activity01";
    private TextView  mTextView = null;
    private EditText mEditText = null;
    private EditText mima = null;
    private Button mButton = null;
    private DataOutputStream toserver;
    private DataInputStream fromserver; 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton = (Button) this.findViewById(R.id.button1);
        mButton.setText("登录");
        mTextView = (TextView) this.findViewById(R.id.textView1);        
        mEditText = (EditText) this.findViewById(R.id.editText1);
        mima =(EditText) this.findViewById(R.id.editText2);
        mButton.setOnClickListener(new Button.OnClickListener(){            
            public void onClick(View v) {
               Socket socket = null;
               String ms = mEditText.getText().toString();
               String message = mima.getText().toString()+"\r\n";
               try{
                     socket = new Socket("192.168.1.100",54321);
                    //接受服务器的数据流
                    fromserver = new DataInputStream( socket.getInputStream());
                    //要发送的数据流
                    toserver=new DataOutputStream(socket.getOutputStream());
                    toserver.writeBytes(message);
                    toserver.flush();
                    String msg = fromserver.readLine();
                   if(msg != null)
                   {   if(msg.equals(ms))
                       mTextView.setText("登录成功");
                   else
                       mTextView.setText("密码错误");
                   }else
                   {
                       mTextView.setText("数据错误");
                        
                   }
                   toserver.close();
                   fromserver.close();
                   socket.close();
               }catch(Exception e){
                  mTextView.setText("没连接上");
               }
                 
            }
             
        });
    }
}




2. [代码]pc简单的服务器


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
 
public class AndroidServer implements Runnable{
 
    @Override
    public void run() {
       try{
           ServerSocket serverSocket = new ServerSocket(54321);
           while(true){
               System.out.println("Android socket 等待接受客户的连接");
               Socket client = serverSocket.accept();//接受客户端请求
               try{
                   BufferedReader in = new BufferedReader
                   (new InputStreamReader(client.getInputStream()));
                   String str = in.readLine();
                   System.out.println("read:"+str);
                   PrintWriter out = new PrintWriter
                   (new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true
                           );
                   out.println(str);
                   in.close();
                   out.close();
               }catch(Exception e){
                   System.out.println(e.getMessage());
                   e.printStackTrace();
               }
               finally{
                   client.close();
                   System.out.println("Android socket close");
               }
                
           }
       }catch(Exception e){
           System.out.println(e.getMessage());
       }
         
    }
    public static void main(String[] srgs){
        Thread desktopServerThread = new Thread(new AndroidServer());
        desktopServerThread.start();
    }
     
 
}
 

3. [代码]别忘了在AndroieManifest.xml里加上这个

<uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>


本文转载自:

Android攻城狮
粉丝 0
博文 30
码字总数 0
作品 0
朝阳
程序员
私信 提问
加载中

评论(1)

用户3314186077
用户3314186077
用手机怎么老是连接不上啊,服务器 String str = in.readLine();老是报异常:java.net.SocketException: Connection reset
  at java.net.SocketInputStream.read(Unknown Source)
  at java.net.SocketInputStream.read(Unknown Source)
如果客户端是电脑的话没问题,一上真机就抛异常。
手机的ip到底什么原理

在做一个安桌项目 需要用到服务器与客户端的通信 使用UDP通信 当我用电脑的模拟机和另一台PC的服务器建立连接时 模拟机可以发送数据 也可以接收数据 但是换到真机上测试就只能发送数据 接受不...

fyhahaha
2013/07/07
1K
12
ytkah常用网址导航 关于网站运营等

关于运营的网站人人都是产品经理产品100爱运营A5网站运营姑婆那些事儿馒头商学院运营者91运营网互联网的一些事jb51网站运营三联网站运营从零开始做运营 科技/互联网cnBetaTechweb腾讯科技新浪...

ytkahcom
2017/01/21
0
0
Socket 通信求助!!!!!!

我做的手机与PC通信,手机客户端先接收消息后返回消息给服务器,这个没有问题,但是改成先发送消息给服务器在接受服务器的消息就不行了,服务器阻塞在in.readLine()哪里,我服务器都做了对...

不许睡_起来嗨
2012/10/20
118
3
System.IO系列:局域网内多线程使用命名管道在进程之间通信实例

有关管道的基本用法请看System.IO之使用管道在进程间通信 (System.IO.Pipes使用)。 本文介绍命名管道使用实例,文中例子是几个客户端都通过一台服务器获得新生成的int类型id。 服务器端功能...

长平狐
2012/06/08
241
0
android socket通信 模拟器可以 真机不行 是防火墙的原因

============================================================================================================= 从网上找了个例子,没有设置wifi时程序正常,pc上运行java程序作为服务器......

TinaWang
2014/03/29
472
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
640
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
35
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
19
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
65
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
63
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部