socket网络编程

来源:互联网 发布:linux netsnmp 编辑:程序博客网 时间:2024/06/10 05:24
网络编程
1、 网络编程:针对TCP,UDP协议进行编程,qq,feiq,msn
       网站(页)编程:baidu,sohu,sina
2、 网络概念:


       网络功能:数据通信,资源共享
3、 协议:通信双方遵守的通信标准
       ****tcp:传输控制协议(面向连接的,比如:打电话)
       udp:用户数据报协议(面向无连接的,比如:邮包,看视频)
       ip:Internet protocol,网际协议(Ip地址   本地地址:127.0.0.1)
       端口号:256*259,0-65535   建议使用1024以上(tcp和udp各有一份)
 4、TCP编程java.net
        套接字:两台机器间通信的端点
        ServerSocket
Socket
c/s:client/server   b/s:browser/server
6、客户端和服务端随意聊天
      主线程:从控制台录入信息,发送到对方
      子线程:从对方接收消息
      练习:2、客户端输入三角形的三条边长,判断能否组成三角形,将三条边发送到服务器端,计算三角形面积,返回给客户端
      a,b,c     p = (a+b+c)/2     area=Math.sqrt(p*(p-a)*(p-b)*(p-c));(海伦公式)
 常见问题:
 会因为缺少换行标记而读不到内容
 返回结束标记:s.shutdownInput( )此套接字的输入流置于“流的末尾”
               s.shutdownOutput( )禁用此套接字的输出流


7、UDP:用户数据报协议
   DatagramSocket:用来发送和接收数据报包
   receive(dp):接收 send(dp):发送
   DategramPacket:数据报包
   发送端在数据报包应该指定接收端的地址和端口号
   DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 11000);
8、群聊天:一个客户端发送,所有的客户端都能接收到
   服务器:并不负责聊天,它负责接收客户端发来的消息,之后转发给所有的客户端
   accept:侦听并接受客户端连接
   使用集合保存所有与服务器连接的客户端,保存Socket
   List<Socket> 
   主线程:接收客户端连接,并保存到集合中
   子线程:接收客户端发来的消息,遍历集合,进行群发
           成员变量:存储socket的集合  socket:当前连接的客户端
       /*
        * 4、点对点聊天
     map<用户名,Socket>
                     主线程:接受客户端连接
           Map集合在主线程中定义
                      子线程:接收客户端消息
               a:注册:#zhangsan
                       截取用户名,之后将对应的Socket,存储到map集合中
                        遍历map集合,把注册的用户名组织成一个字符串,发给所有连 接的客户端
               b:指定聊天:@zhangsan:hello
                       截取用户名和消息
                       根据用户名找到对应的Socket,发送消息
        */


图形用户界面(接口):GUI
JFrame:默认
FlowLayout:流式布局 ,默认居中
JPannel:默认流式布局
0 0