Socket请求

SocketClient

package com.zhidi.socketclient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	private final static String IP="192.168.2.3";
	private final static int PORT=8888;
	
	private TextView tv_msg;
	private Button bt_get; 
	
	String result="";
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        
        tv_msg = (TextView) findViewById(R.id.tv_msg);  
        bt_get = (Button) findViewById(R.id.bt_get);  
        bt_get.setOnClickListener(new OnClickListener() {
  
            @Override  
            public void onClick(View v) {
            	//4、使用线程执行访问服务器,获取返回信息后通知主线程更新UI或者提示信息。
				final Handler handler = new Handler() {
                    @Override  
                    public void handleMessage(Message msg) {  
                        if (msg.what == 1) {
                        	//5、读取结果,更新UI。
                        	tv_msg.setText(result);
                        }  
                    }  
                };
                // 启动线程来执行任务  
                new Thread() {  
                    public void run() {
                    	//请求网络
                    	getMsg(IP, PORT);
                        Message m = new Message();  
                        m.what = 1;  
                        // 发送消息到Handler  
                        handler.sendMessage(m);  
                    }  
                }.start();
                
            }  
        });
    }
    
    /**
     * 从服务器读取返回消息
     * @param dstName 服务器ip地址
     * @param dstPort 服务器端口
     */
    private void getMsg(String dstName, int dstPort){
    	try {
    		//1、创建Socket,指定服务器地址和端口号。
            Socket socket = new Socket(dstName, dstPort);
            socket.setSoTimeout(10000); //设置10秒之后即认为是超时 
            //2、从Socket里获取InputStream,使用InputStreamReader读取,装载进BufferedReader读取。
            BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
            
            result += buffer.readLine()+"\n";
  
            //3、关闭流,关闭Socket。
            buffer.close();  
            socket.close();  
        }catch (IOException e) {  
            e.printStackTrace();  
        } 
    }
    
}

SocketService

package com.zdsoft;

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyService {
	
	public static void main(String[] args) throws IOException {  
		System.out.println("服务器端启动.......");
		
		//1、创建一个ServerSocket,用于监听客户端socket的连接请求 。
        ServerSocket serivce=new ServerSocket(8888);
        //2、采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket。
        while(true){
            //3、接收客户端请求。
            Socket socket = serivce.accept();
            
            System.out.println("客户端ip:"+socket.getInetAddress()+"\n");
            
            //4、创建输出流,向客户端发消息。
            OutputStream os=socket.getOutputStream();  
            os.write("你好,这是智递科技服务器端。".getBytes("utf-8"));  
            //5、关闭流,关闭Socket。
            os.close();  
            socket.close();
        }  
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值