新手学Socket,及常见问题解决,看完肯定学会Socket,demo绝对没问题
2014-09-17 23:07
375 查看
这两天一直在研究Socket编程,其实也说不上研究吧,就是想试一下Socket这个协议,了解一下而已。
首先,这里附上对Socket的初步了解:参考http://blog.csdn.net/mimitracely/article/details/8043995
先看看socket通信基础:
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。
服务器:
使用ServerSocket监听指定的端口,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
客户端:
使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。
0~1023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23, 所以我们在选择端口号时,最好选择一个大于1023的数以防止发生冲突。
后来发现,并没有想象中的那么简单。照着网上的代码打进去,还是运行不了,一大堆的错误,再看看Logcat,不是黄色就是红色。经过几天地努力,终于成功了。Socket很简单,就是一些小地方不注意很容易出错,一些新手(就像我),很容易出现以下各种问题
问题一:
用手机,或者模拟器作为服务器端的时候,总是不能真正的开启端口
(如何查看你是否开了端口,打开cmd输入netstat -aon,如下就可以看到已开启的端口)
解决:别用手机做服务器端,用电脑做服务器端,如果你用java工程,在main方法里运行,这样绝对可以开启端口
问题二:
用手机,或者模拟器作为客户端的时候,总是不能连接已经开启的端口
解决:把模拟器访问的ip设为:10.0.2.2。即----------------->socket=new
Socket("10.0.2.2",5546);
ps:Android客户端别忘了上网权限<uses-permission android:name="android.permission.INTERNET"/>
下面是我的一个demo
http://download.csdn.net/download/u014736095/7934395
运行方式是:
1、先运行java工程启动服务端口,
2、然后运行Android工程向端口发送消息
运行过程截图:
最后发现,其实很简单。哈哈~~~~~~~~~~~~~~~~~~
首先,这里附上对Socket的初步了解:参考http://blog.csdn.net/mimitracely/article/details/8043995
先看看socket通信基础:
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。
服务器:
使用ServerSocket监听指定的端口,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
客户端:
使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。
0~1023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23, 所以我们在选择端口号时,最好选择一个大于1023的数以防止发生冲突。
后来发现,并没有想象中的那么简单。照着网上的代码打进去,还是运行不了,一大堆的错误,再看看Logcat,不是黄色就是红色。经过几天地努力,终于成功了。Socket很简单,就是一些小地方不注意很容易出错,一些新手(就像我),很容易出现以下各种问题
问题一:
用手机,或者模拟器作为服务器端的时候,总是不能真正的开启端口
(如何查看你是否开了端口,打开cmd输入netstat -aon,如下就可以看到已开启的端口)
解决:别用手机做服务器端,用电脑做服务器端,如果你用java工程,在main方法里运行,这样绝对可以开启端口
问题二:
用手机,或者模拟器作为客户端的时候,总是不能连接已经开启的端口
解决:把模拟器访问的ip设为:10.0.2.2。即----------------->socket=new
Socket("10.0.2.2",5546);
ps:Android客户端别忘了上网权限<uses-permission android:name="android.permission.INTERNET"/>
下面是我的一个demo
http://download.csdn.net/download/u014736095/7934395
运行方式是:
1、先运行java工程启动服务端口,
2、然后运行Android工程向端口发送消息
运行过程截图:
最后发现,其实很简单。哈哈~~~~~~~~~~~~~~~~~~
相关文章推荐
- 【智能车新手入门 】-JLINK v8常见问题以及解决办法
- jquery 新手学习常见问题解决方法
- jquery 新手学习常见问题解决方法
- Linux-ubuntu 2.4.26 新手常见问题解决方法
- CKEditor和CKFind 使用配置 常见配置问题的解决办法 CKEditor Demo(Asp.net)
- oracle新手常见的问题及解决办法
- 在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对于该问题的解决方法也是“见机行事”。
- Recyclerview 常见问题的 Demo 解决办法
- jquery 新手学习常见问题解决方法
- oracle 新手遇到常见问题的解决办法
- oracle新手常见的问题及解决办法
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 移动硬盘常见问题的解决
- Asp常见问题(新手)
- 想写写个socket解决大文件上传的问题
- 一些常见的问题与解决代码!(精典) 3
- 一些常见的问题与解决代码!(精典) 4
- 使用Apache Axis部署 Web服务时的常见问题及其解决方法
- 局域网最常见问题及解决
- js一些常见的问题与解决代码(转自www.51js.com)