使用Socket通信(二)
这个socket有梗,主要是服务器端有梗,可能大家会碰到同样的问题,网上查了好久,这里分享一下解决办法.首先在第一个module建一个类SimpleServer,这个类就是服务端,建好之后在代码左边有一个运行按钮,直接点击运行即可,不用运行module.这样服务端运行到accept就会阻塞,直到有客户端跟他连接才会继续往下运行,服务端端口号用Tomcat的端口号.梗就在这里:运行之后报错:BindException: Address already in use: JVM_Bind网上查了好久原来是端口被占用发生了冲突,然后我把Tomcat关掉又好了,很纠结关掉Tomcat怎么使用客户端啊,网上这样解决:打开Tomcat,cmd然后输入netstat -ano找到占用Tomcat端口的PID
我的是6728然后windows窗口底部任务栏右键打开任务管理器
点击详细信息再点击PID按顺序查找,找到6728,然后右键终止程序,这时再运行服务端就不会报BindException: Address already in use: JVM_Bind错误了
public class SimpleServer {
    public static void main(String[] args) throws IOException {
        //创建一个ServerSocket,用于监听客户端socket的连接请求
        ServerSocket ss=new ServerSocket(9999);
        //采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket
        while(true){
            Socket s=ss.accept();
            OutputStream os=s.getOutputStream();
            os.write("您好,您收到了服务器的新年祝福!\n".getBytes("utf-8"));
            System.out.println("服务器");
            os.close();
            s.close();
        }
    }
}

点击左上角绿色三角运行服务端
///////////////
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread(){
            @Override
            public void run() {
                super.run();
                try {
                    Socket socket = new Socket("你的ip地址,cmd输入ipconfig查找", 9999);
                    //设置10秒之后即认为是超时
                    socket.setSoTimeout(10000);
                    BufferedReader br = new BufferedReader(new InputStreamReader(
                            socket.getInputStream()));
                    String line = br.readLine();
                    System.out.println("来自服务器的数据:" + line);
                    br.close();
                    socket.close();
                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    Log.e("UnknownHost", "来自服务器的数据");
                    e.printStackTrace();
                } catch (IOException e) {
                    Log.e("IOException", "来自服务器的数据");
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }.start();
    }
}
上面是另一个module的主activity,也就是客户端,输出信息代表接收到服务端发送的消息.不要忘了打开网络权限
使用Socket通信(二)的更多相关文章
- java scoket Blocking 阻塞IO socket通信二
		
在上面一节中,服务端收到客户端的连接之后,都是new一个新的线程来处理客户端发送的请求,每次new 一个线程比较耗费系统资源,如果100万个客户端,我们就要创建100万个线程,相当的 耗费系统的资源, ...
 - 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)
		
1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...
 - AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍
		
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
 - socket通信
		
socket通信 一:socket基于Tcp连接,数据传输有保证 二:socket连接的建立过程: 1:服务器监听 2:客户端发出请求 3:建立连接 4:通信 三:一个简单的例子:服务器端每隔一段时间 ...
 - .NET开源高性能Socket通信中间件Helios介绍及演示
		
一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大 ...
 - iOS开发之Socket通信实战--Request请求数据包编码模块
		
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
 - AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
		
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
 - AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置
		
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
 - Socket 通信(基础原理、实时聊天系统雏形)
		
什么是 Socket? Socket 英文直译为"孔或插座",也称为套接字.用于描述 IP 地址和端口号,是一种进程间的通信机制.你可以理解为 IP 地址确定了网内的唯一计算机,而 ...
 
随机推荐
- python爬取链家二手房信息,确认过眼神我是买不起的人
			
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
 - php反序列化浅谈
			
0x01 serialize()和unserialize() 先介绍下几个函数 serialize()是用于将类转换为一个字符串 unserialize()用于将字符串转换回一个类 serialize ...
 - c++中清空输入缓冲区的方法(做cf的时候炸了)
			
C/C++ 四种清空输入缓冲区的方法 比较实用的一种 char c; while(c=getchar()!='\n'); 或者是这种 cin.ignore(count,c); count代表要清除的字 ...
 - PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox
			
PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encod ...
 - Java基础系列-Optional
			
原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755368.html 一.概述 Optional的引入是为了解决null的问题,那么到底是解决nul ...
 - CentOS openssh升级到openssh-7.2版本
			
查看现在的版本SSH -V 一.准备 备份ssh目录(重要) cp -rf /etc/ssh /etc/ssh.bak [ 可以现场处理的,不用设置 安装telnet,避免ssh升级出现问题,导致无法 ...
 - C\C++中strcat()函数
			
转载:https://blog.csdn.net/smf0504/article/details/52055971 C\C++中strcat()函数 ...
 - 利用Python+pyecharts+tushare图形化展示股票历史财务信息
			
在微信或其他平台上,经常能看到别人推荐股票,分析的头头是道,让自己懊恼于没有早点关注到这只股票,好像错失了几个亿.但是投资股票又忌讳听消息跟风,总不能看到别人推荐自己就无脑买入. 看到了一只股票,自己 ...
 - Go path/filepath包
			
path/filepath 标准库path中有的功能filepath全部具备, 所以使用filepath即可. isABS() 判断一个路径是不是绝对路径. package main import ( ...
 - Axure实现vcg官网首页原型图
			
W240第二天第三天 Axure的简单使用: 作业实现:vcg官网首页原型图 帮助文档基础篇:原型图基础之axure线框图设计 导航栏设计: 添加通用母版header 导航栏设计注意: 鼠标移动到下面 ...