一个实例通过client端和server端通讯

客户端发送:“我是客户端,请多关照”

服务端回复:“收到来自于"+s.getInetAddress().getHostName()+"的信息”

TestTcp1

附源码:

package com.ykw.net;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

import org.junit.Test;

//TCP_IP1
//客户端给服务端发送信息。服务端输出此信息在控制台上
//网络编程实际上就是Socket的编程
public class TestTCP1 {
    
    //客户端
    @Test
    public void client(){
        Socket socket = null ;
        OutputStream os = null;
        
        try {
            //1.创建一个Socket的对象,通过构造器指明服务端的ip地址,以及接受程序的端口号
            socket = new Socket(InetAddress.getByName("127.0.0.1"),9090);
            //2.getOutputStream():发送数据,方法返回OutputStream的对象
            os = socket.getOutputStream();
            //3.具体的输出过程
            os.write("我是客户端,请多关照".getBytes());
        } catch (IOException e) {
            
            e.printStackTrace();
        }finally{
            //4.关闭相应的流和Socket对象
            if(os!=null){
                try {
                    os.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
        
        
    
    }
    
    //服务器端
    @Test
    public void server(){
        ServerSocket ss=null;
        Socket s=null;
        InputStream is=null;
        try {
            //1.创建一个ServerSocket对象,通过构造器指明自身的端口号
            ss = new ServerSocket(9090);
            //2.调用其accept()方法,返回一个Socket对象
            s = ss.accept();
            //3.调用Socket对象的getInputStream()获取一个从客户端发送过来的输入流
            is = s.getInputStream();
            //4.对获取的输入流进行的操作
            byte [] b = new byte[20];
            int len;
            while((len = is.read(b))!=-1){
                String str = new String(b,0,len);
                System.out.println(str);
            }
            System.out.println("收到来自于"+s.getInetAddress().getHostName()+"的信息");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            //5.关闭相应的流以及Socket,ServerSocket的对象
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(s!=null){
                try {
                    s.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(ss!=null){
                try {
                    ss.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
 
     }
}

(J)day20_networkProgram

最新文章

  1. Atitit  godaddy 文件权限 root权限设置
  2. Vertica license导入最佳实践
  3. MongoDB【第一篇】MongodDB初识
  4. JAVA 多线程随笔 (三) 多线程用到的并发容器 (ConcurrentHashMap,CopyOnWriteArrayList, CopyOnWriteArraySet)
  5. PythonS12-day4学习笔记
  6. 关于最近的CSRF攻击
  7. [译]Mongoose指南 - 查询
  8. uva 818 (位运算 + 判环)
  9. 如何解决分布式系统数据事务一致性问题(HBase加Solr)
  10. HDU 5137 How Many Maos Does the Guanxi Worth
  11. C:进制
  12. mysql笔记整理
  13. 公交wifi运营平台分析
  14. Could not bind factory to JNDI
  15. EF Code First 学习笔记:表映射
  16. IE兼容性问题解决方案2--css样式兼容标签
  17. node.js 针对不同的请求路径(url) 做出不同的响应
  18. float的理解
  19. POJ 2318 TOYS(计算几何)
  20. coding 除了托管外,还能进行团队协作.

热门文章

  1. [python]print简单用法和读取用户输入
  2. LuoGu-P1122 最大子树和+树形dp入门
  3. codeforces 877 E. Danil and a Part-time Job(线段树(dfs序))
  4. 牛客网暑期ACM多校训练营(第二场) I Car 思维
  5. 面试必问的MySQL锁与事务隔离级别
  6. hadoop历史服务的启动与停止
  7. CXF添加拦截器和自定义拦截器
  8. 爬取凤凰网站财经类的新闻,函数时编程,可全部实现,由于内容量大,需要时间太长,服务器会禁止,为了防止,可以将time.sleep()设置的时间长点
  9. Python函数编程——闭包和装饰器
  10. day02小结