基于SOCKET套接字的网络编程

摘自书本 

运行环境:ECLIPSE并且安装了android相关文件

主要内容、功能:创建一个java project服务器端  创建一个android project客户端  实现点击客户端后服务器端即可发送短信给客户端。

首先要创建一个java project作为服务器端

输入以下代码

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class Samle5_1Server {

    public static void main(String[] args){

    ServerSocket ss=null;

    Socket s=new Socket();

    DataInputStream din=null;

    DataOutputStream dout=null;

                                                                  

    try{

    ss=new ServerSocket(8890);

    System.out.println("have listen from 8888!");

       

    

   }

    catch(Exception e){

    System.out.println("1");

       e.printStackTrace();

    

   }

    while(true){

    try{

   s=ss.accept();

    din=new DataInputStream(s.getInputStream());

    dout=new DataOutputStream(s.getOutputStream());

   String msg=din.readUTF();

    System.out.println("ip:"+s.getInetAddress());

    System.out.println("msg:"+msg);

    System.out.println("============");

    dout.writeUTF("Hellow Client!");

    

   }

    catch(Exception e){

    System.out.println("2");

   e.printStackTrace();

   }

    finally{

    try{

    if(dout!=null)

   {

   dout.close();

    

   }

    if(din!=null)

   {

   din.close();

    

   }

    if(s!=null)

   {

   s.close();

    

   }

   }

    catch(Exception e){

    System.out.println("3");

       e.printStackTrace();

       }

    

   }

    

   }

    }

}

接下来创建一个android project客户端,但是在此之前有一小关卡要打开

就是在你新创建的android project里打开AndroidMainfest.xml在其</mainfest>标记之前添加语句

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

完成这一步后再在SRC文件夹里新建一个包 一个类(我的类命名Sample5_1)

接这再输入下列代码:

 

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.net.Socket;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

 

public class Sample5_1ServerActivity extends Activity implements OnClickListener{

    /** Called when the activity is first created. */

    //@Override

    Button button1;

    EditText editText;

    TextView textView;

    

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

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

        editText=(EditText)findViewById(R.id.editText);

        textView=(TextView)findViewById(R.id.textView);

        button1.setOnClickListener(this);

    }

 

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Socket s=null;

DataOutputStream dout=null;

DataInputStream din=null;

if(v==button1){

try{

s=new Socket("192.168.12.1",8890);                                          //这里设置的是服务端的IP:192.168.12.1 如果读者是在本纪做试验 最好输入自己的IP地址  8890是打开的端口  记得输入一个目前没有程序在使用的端口。 

dout=new DataOutputStream(s.getOutputStream());

din=new DataInputStream(s.getInputStream());

dout.writeUTF(editText.getText().toString());

textView.setText("the message from the server Two"+din.readUTF());

 

 

}

catch(Exception e){

e.printStackTrace();

 

}

finally{

try{

if(dout!=null)

{

dout.close();

 

}

if(din!=null)

{

din.close();

 

}

    if(s!=null){

s.close();

 

    }

 

}

catch(Exception e){

e.printStackTrace();

}

 

}

}

}

}

 

 

弄完这些 运行客户端以及服务端即可实验  客户端按一下按钮后  就会收到来自服务端的消息。

读者觉得有什么觉得更正的地方麻烦提出来  互相学习最重要^^

posted @ 2012-07-29 21:19  风雪月归林  阅读(206)  评论(0编辑  收藏  举报