android网络HTTP和TCP
来源:互联网 发布:淘宝客服每天工作内容 编辑:程序博客网 时间:2024/06/06 13:14
制作基于TCP的聊天室
获取访问权限
要访问网络,需要在你的配置文件中获取INTERNET权限
Android客户端
public class MainActivity extends Activity implements OnClickListener { EditText et; TextView tv; OutputStream os; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.editText1); tv = (TextView) findViewById(R.id.textView1); findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub if (v.getId() == R.id.button1) { String info = et.getText().toString(); // 向textView添加内容 tv.append("me:" + info + "\n"); et.setText(""); // 将用户输入的信息发送给服务器 DataOutputStream dos = new DataOutputStream(os); try { dos.writeUTF(info); } catch (IOException e) { e.printStackTrace(); } } else if (v.getId() == R.id.button2) { // 登入聊天室 new AsyncTask<Void, String, Void>() { @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub try { boolean isRun = true; Socket socket = new Socket("192.168.0.103", 8989); publishProgress("联网成功", "1"); os = socket.getOutputStream(); // 接收服务器数据 InputStream is = socket.getInputStream(); DataInputStream dis = new DataInputStream(is); while (isRun) { // 阻塞 String info = dis.readUTF(); publishProgress(info); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); if (values.length == 2) { Toast.makeText(MainActivity.this, "联网成", Toast.LENGTH_SHORT).show(); } else { tv.append(values[0] + "\n"); } } }.execute(); } }}
activity_main.
JAVA服务器端public class Test { public static ArrayList<Socket> listSocket = new ArrayList<Socket>(); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub boolean isRun = true; try { System.out.println(InetAddress.getLocalHost()); ServerSocket server = new ServerSocket(8989); //客户端的身份编号 int count = 0; while(isRun){ System.out.println("监听是否有客户端连接..."); Socket socket = server.accept(); count++; System.out.println("客户端" + count + "已连接"); listSocket.add(socket); //启动一个新线程 new MyThread(socket, "clinet_"+count).start(); } server.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
public class MyThread extends Thread { Socket socket; String name; public MyThread(Socket socket, String name) { // TODO Auto-generated constructor stub this.socket = socket; this.name = name; } public void run() { super.run(); // TODO Auto-generated method stub boolean isRun = true; try { // InputStream is = socket.getInputStream(); DataInputStream dis = new DataInputStream(is); while(isRun){ //接收数据 String info = dis.readUTF(); System.out.println(name + ":" + info); //发送数据 (向所有的客户端发数据,除了自己) for (int i = 0; i < Test.listSocket.size(); i++) { Socket clientSocket = Test.listSocket.get(i); if(!clientSocket.equals(this.socket)){ OutputStream os = clientSocket.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); dos.writeUTF(name + ":" + info); } } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
基于Http的网络请求
什么是http
超文本传输协议(HyperText Transfer Protocol – HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议。HTTP在客户端和服务器之间以request-response protocol(请求-回复协议)工作。
http请求类型
get请求:从指定的服务器中获取数据
post请求:提交数据给指定的服务器处理
public class MainActivity extends Activity implements OnClickListener { ImageView iv; ProgressBar pb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv=(ImageView) findViewById(R.id.imageView1); pb=(ProgressBar) findViewById(R.id.progressBar1); findViewById(R.id.button1).setOnClickListener(this); } @Override public void onClick(View v) { new AsyncTask<String, Void, Bitmap>() { @Override protected Bitmap doInBackground(String... params) { try { //创建URL对象 URL url=new URL(params[0]); //打开超链接,得到对象 HttpURLConnection conn=(HttpURLConnection) url.openConnection(); //获取字节流 InputStream is=conn.getInputStream(); //将字节流的数据读出来生成位图对象 Bitmap bitmap=BitmapFactory.decodeStream(is); return bitmap; } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } protected void onPostExecute(Bitmap result) { super.onPostExecute(result); pb.setVisibility(View.INVISIBLE); iv.setVisibility(View.VISIBLE); iv.setImageBitmap(result); }; }.execute("http://www.nowamagic.net/librarys/images/random/rand_11.jpg"); }}
0 0
- android网络HTTP和TCP
- 网络 TCP/IP和HTTP
- android 网络编程Udp、Tcp、Http Socket
- 【Android】【网络编程】网络协议,HTTP,TCP,Socket,Get,Post
- Tcp、Http网络协议
- Android之Http,Socket和Tcp/Ip
- Android Http和TCP协议编程
- Android网络编程之TCP/IP,HTTP,HTTPS协议了解
- Socket、TCP/IP、HTTP、FTP和网络编程
- 浅谈网络编程之TCP、HTTP和SOCKET
- IOS网络基础 — TCP、UDP、URL和HTTP
- HTTP和tcp,udp,ip等网络协议学习
- 网络 一一 HTTP 和 TCP/IP 的区别
- 网络协议之Tcp、Http
- Android的http网络请求和发送
- android网络编程:Socket和Http
- Android-HTTP网络编程和Soket
- iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP
- C++ hdoj 2040
- com.sun.proxy.$Proxy25 cannot be cast to com.levi.service.impl.ProductServiceImpl和proxy-target-class
- Sklearn 用户手册 一:机器学习初体验
- IPC之Posix信号量详解
- 白盒测试方法和工具
- android网络HTTP和TCP
- c#协变-逆变复习
- R的神经网络包
- 散列表、散列函数
- CCNA笔记2--OSI参考模型与设备的关系
- 80x86系统寄存器以及系统指令(个人理解)
- C#控制台基础 输入年份月份,判断这个月有多少天与try catch的嵌套
- 学好C语言需要的五本书
- EsayUI关于分页的