java网络编程之socket编程笔记

网络编程也就是使得程序可以在网络上进行交互操作,使其具有网络功能,现在大部分程序开始转变为网络化,实时化。我们常用的QQ,等通讯工具,现在文字工具也开始网络化,如金山的wps。网络化的好处我就不多说了,你懂的!

开始正题吧:

由于刚刚学习网络编程,暂时是用socket来进行的。不知道大家对端口号这个东西了解不?如果不了解,可以去查看计算机网络这本书,讲得很详细。这里稍微讲一下,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等,小于1024的端口号一般作为常用的服务器端口,大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的。如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

好吧,了解了端口就用它来干点事吧!

首先我们把服务器端的程序做好,代码暂时先贴出来

package Netsever; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.*; import java.nio.Buffer; public class Netsever1 { Netsever1() { try { ServerSocket ss=new ServerSocket(8888);//建一个端口号为8888的服务器socket Socket s=new Socket(); System.out.println("等待连接"); s=ss.accept();//让他处于监听的状态,监听来来连接的程序 System.out.println("连接成功"); InputStreamReader isr=new InputStreamReader(s.getInputStream());//获取并接受socket中的流 BufferedReader br=new BufferedReader(isr); String str= br.readLine();//读取数据 System.out.println(str); PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//创建一个输出的流 pw.println("你好呀!客户端。。。。"); //输出我们想要输出的 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub Netsever1 ns=new Netsever1(); } }

他的初始状态是:


接下来把客户端写好吧!不能让他一直等着。

package Client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.*; public class Netclient { Netclient() { try { Socket s=new Socket("192.168.1.4",8888);//ip地址是我自己的,因为服务器也在我机器上,如果是别的机器,就写别的IP System.out.println("连接"); //输出流 PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//后面跟服务器端是差不多的。 pw.println("hello ,我是小牛毛"); InputStreamReader isr=new InputStreamReader(s.getInputStream()); BufferedReader br=new BufferedReader(isr); String str= br.readLine(); System.out.println(str); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub Netclient nc=new Netclient(); } }

客户端暂时就写着么多了,下面我们就运行一下,看他是否能够连接上:


看来连接是成功了,接收到了服务器端发来的信息。

下面再看看服务器端发生了什么情况:

服务器端也收到了客户发来的消息。

看来是ok了。

下面是我做的一个小练习,山寨版的QQ.代码就不贴了,贴个图看看吧!

下面是他们的聊天,很火热哦!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值