当前位置: 首页 > news >正文

android 里使用Socket进行发送消息案例

猜拳 源码
http://www.eoeandroid.com/thread-114907-1-1.html

自己实现的Android曲线图
http://www.eoeandroid.com/thread-207218-1-1.html

android游戏物理引擎源码
http://www.eoeandroid.com/thread-207445-1-1.html

socketServer类

package com.socket.server;
 
import java.io.*;
import java.net.*;
 
import android.content.Context;
import android.content.Intent;
 
public class SocketServer {
 
ServerSocket sever;
Context context;
 
public SocketServer(Context context, int port) {
try {
//实例化ServerSocket传入端口号
sever = new ServerSocket(port);
this.context = context;
} catch (IOException e) {
e.printStackTrace();
}
}
 
public void ControlActionAnswerMsg(String str) {
final Intent intent = new Intent();
intent.setAction("SOCKET_ACTION");
intent.putExtra("message", str);
context.sendBroadcast(intent);
}
 
public void beginListen() {
//将socket监听放入线程中,防止影响主线程操作
new Thread() {
public void run() {
//因为是不断监听的过程,所以采用死循环
while (true) {
try {
//这里是做监听操作
final Socket socket = sever.accept();
 
BufferedReader in;
try {
//监听到消息后这里读取流信息
in = new BufferedReader(new InputStreamReader(
socket.getInputStream(), "UTF-8"));
//将流信息放入PrintWriter中,然后读出来即可
PrintWriter out = new PrintWriter(
socket.getOutputStream());
while (!socket.isClosed()) {
String str;
//读出字符串
str = in.readLine();
out.println("Hello!world!! " + str);
out.flush();
if (str == null || str.equals("end"))
break;
System.out.println(str);
ControlActionAnswerMsg(str);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
 
}
}.start();
}
}

ClientSocket类

package com.socket.pc;
import java.io.*;
import java.net.*;
public class ClientSocket {
 static Socket client;
 public ClientSocket(String site, int port) {
  try {
   //实例化socket传入ip和端口号,两边端口号要统一
   client = new Socket(site, port);
   System.out.println("Client is created! site:" + site + " port:"
     + port);
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 public String sendMsg(String msg) {
  try {
   // BufferedReader in = new BufferedReader(new InputStreamReader(
   // client.getInputStream()));
   //将字符串转成输出流然后发送出去
   PrintWriter out = new PrintWriter(client.getOutputStream());
   out.println(msg);
   out.flush();
   // return in.readLine();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return "";
 }
 public void closeSocket() {
  try {
   client.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

服务端与客户端源码

 

转载于:https://www.cnblogs.com/nuliniaoboke/archive/2012/10/17/2727622.html

相关文章:

  • 进程间通信基础知识
  • 解决Please check that your locale settings
  • 15.4. 内容监控
  • 汇编语言笔记04-第一个程序
  • 阿里云聆听平台使用有感
  • 今晚测试了下微信的摇一摇传图
  • svn + 钉钉机器人制作简单的代码跟踪系统
  • 黑客惯用软件
  • winform命名规范
  • Spring_事务管理
  • 切入点表达式
  • 浅谈偏向锁、轻量级锁、重量级锁
  • Domino
  • Node.js design pattern : module
  • 数据结构-多项式计算器(将中缀表达式转化为后缀表达式实现)
  • 4. 路由到控制器 - Laravel从零开始教程
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • android图片蒙层
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • ES学习笔记(12)--Symbol
  • JAVA_NIO系列——Channel和Buffer详解
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js中forEach回调同异步问题
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python实现BT种子转化为磁力链接【实战】
  • React-flux杂记
  • session共享问题解决方案
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue-cli3搭建项目
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端
  • 驱动程序原理
  • 深入 Nginx 之配置篇
  • 使用Swoole加速Laravel(正式环境中)
  • 带你开发类似Pokemon Go的AR游戏
  • ​ArcGIS Pro 如何批量删除字段
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 达梦数据库知识点
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #pragma once与条件编译
  • (003)SlickEdit Unity的补全
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (Java)【深基9.例1】选举学生会
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (强烈推荐)移动端音视频从零到上手(上)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ACTF2020 新生赛]Upload 1
  • [acwing周赛复盘] 第 94 场周赛20230311