您的位置:首页 > 移动开发 > Android开发

Android Socket(简单的字符串)

2016-05-21 15:14 99 查看
暑假快到了,又得开始找兼职了,上网看了看。大部分的Android程序猿基本就两条路,要么是sdk的开发,要么就是对网络的熟悉,想了想,还是网络这部分的挑战兴大点,所以决定学习学习网络的编程,友情提示,socket还有http的学好,对于http方面的,大家肯定做过一些新浪的手机app等,简单的http基本都是会的,但是今天说的是socket,。。。。。。

从简单开始吧,其实socket也是挺简单的(至少菜鸟的我是这么觉得的),用socket的,不外乎是为了传递数据,而数据基本上就是那几种,所以重要的不是socket的构成什么的,重要的是io的操作,如果对io不熟悉,就怕你用bufferread去向文件输入自定义数组,

对于sockt的话,推荐大家去看《window网络》(太久了,忘记名字了),socket的两个协议,一个是tcp协议,一个是udp协议。

TCP:面向连接的,安全的,速度慢,会反馈确定收到的UDP:不链接的,不安全的,速度快,不确定是否已经接收到,对于本文没多大作用,就不详细说了

先上代码,

java服务器端:

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

//终于完成了

public class MySocket {

    FileWriter fileWriter=null;

BufferedWriter bufferedWriter=null;

    ServerSocket serverSocket;

    public MySocket() {

try {

    serverSocket=new ServerSocket(54543);

    while(true)

    {

        

        Socket socket=serverSocket.accept();

        System.out.println("start");

        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream(), "gb2312"));

        String aString=null;

        aString=bufferedReader.readLine();

        System.out.println(aString);

        fileWriter=new FileWriter("d:\\a.txt");

        //写入文件操作

        bufferedWriter=new BufferedWriter(fileWriter);

bufferedWriter.write(aString);

bufferedWriter.flush();

bufferedWriter.close();

System.out.println("写入完成");

        bufferedReader.close();

    socket.close();

    }



} catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

}



    }

public static void main(String[] args) {

    new MySocket();

    System.out.println("start working");

}

}

然后是Android客户端的:

package com.example.socketc6;

import android.util.Log;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.WriteAbortedException;

import java.net.Socket;

import java.net.UnknownHostException;

import android.R.anim;

import android.app.Activity;

import android.app.Application;

import android.os.AsyncTask;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity implements Runnable {

    BufferedWriter bufferedWriter = null;

    Socket socket = null;

    Button button;

    String world = "hello world";

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        button = (Button) this.findViewById(R.id.button1);

        button.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                new Thread(MainActivity.this).start();

            }

        });

    }

    @Override

    public void run() {

        try {

            socket = new Socket("183.26.254.109", 54543);

            bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

            bufferedWriter.write("essss");

            bufferedWriter.flush();

            bufferedWriter.close();

        } catch (UnknownHostException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

代码比较简单,主要作用是传递下字符串,简单的传递下文字,然后把它保存在文件中,为了省点空间,也为了方便大家理解,所以把它变成了单项传送,比较简单,如有疑问,请留言,或致qq1738731967,谢谢

最后加下题外话,大家可能绝得奇怪,明明说socket很简单,为什么我的包名是socketc6呢?钱6个是错在哪儿?那么答案来了,,,,,,,,原因是因为我秀逗了,在wifi状态下测试,然后就呵呵呵呵,最后才突然想起,然后就诞生了一个socket6的版本,对于为什么在wifi下会失败,大家去看看那本网络编程的就明白了,所以

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

请记住,不要再wifi状态下测试,不然就修改掩码,好,就这样。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android socket