当前位置:  编程技术>java/j2ee

java socket 详细介绍

    来源: 互联网  发布时间:2014-10-24

    本文导语:  //返回本地主机名称及IP地址;InetAddress i = InetAddress.getLocalHost();i.getHostAddress();//IPi.getAddress();//??? //通过计算机名称获取计算机相关信息;InetAddress i = InetAddress.getByName("Livingstone-PC"); //通过域名获取主机相关信息InetAddress ibaidu = I...

//返回本地主机名称及IP地址;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???

//通过计算机名称获取计算机相关信息;
InetAddress i = InetAddress.getByName("Livingstone-PC");

//通过域名获取主机相关信息
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");

URL url = new URL("http://localhost:8080/demo.html");
url.getHost();

TCP:

Socket(客户端):
在对象建立时,就可以去连接指定主机,因为TCP是面向连接的,所以在建立socket服务时,就要有服务端存在,并连接成功,连接通
后,在该通道进行数据传输;
// 创建客户端的socket服务,指定目标主机和端口;
Socket s = new Socket("cj-PC", 10003);
// 为了发送数据,应该获取socket流中的输出流;
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("你好");
out.write("hello".getBytes());

// 接收回送消息
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));

s.close();// 流对象in封装在socket中,自动关闭流对象;

ServerSocket(服务端):
建立服务端的socket服务,ServerSocket,并监听一个端口;
获取连接过来的客户端对象,通过对象的accept方法,没有连接就会等待(阻塞式):
客户端如果发送数据过来,服务端要使用对应的客户端对象的读取流获取客户端发过来的数据;
ServerSocket ss = new ServerSocket(10003);

//ServerSocket(int port,int backlog);backlog为最大连接数目;
Socket s = ss.accept();
InputStream in = s.getInputStream();

byte[] buf = new byte[2014];
int len = in.read(buf);

String rec = new String(buf, 0, len);
System.out.println(rec);

// 回送消息
OutputStream out = s.getOutputStream();
out.write("收到".getBytes());

s.close();// 服务端会自动关闭客户端;
(1)客户端:
建立socket服务,指定要连接主机和端口;
获取socket流中的输出流,将数据写到该流中,通过网络发送给服务端;
获取socket流中的输入流,将服务端反馈的数据获取,关闭客户端资源;

UDP:

DatagramSocket:通过UDP传输方式,将一段文字数据发送出去;
Send:
// 创建udp服务,创建一个DatagramSocket对象并给定一个商品号;
DatagramSocket socket = new DatagramSocket(8888);

// 确定数据,并封装成数据包,DatagramPacket(需指定目的机器的端口号);
byte[] buf = "udp I'm coming".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("Machine-Name"), 10086);
// 发送;
socket.send(dp);
// 关闭;
socket.close();
Receive:
// 定义udpsocket服务。通常会监听一个端口,其实就是给这个接收网络应用程序定义数字标识;
DatagramSocket socket = new DatagramSocket(10086);
while (true) { //目的是不断监听
byte[] buf = new byte[1024];
// 定义数据包,用于存储数据;
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// 通过服务的receive方法将收到的数据存入数据包中;
socket.receive(dp);// 阻塞式方法,没数据就卡死在此;
// 通过数据包的方法获取其中的数据;
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
}

文件上传:

Socket s = new Socket("Machine-Name", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// 停止发送数据
s.shutdownOutput();

ServerSocket ss = new ServerSocket(10005);//ss.accept()方法具有阻塞作用;
// 可为每一个accept()方法得到的Socket建立一个单独的线程;


    
 
 

您可能感兴趣的文章:

  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • Java Socket类库 Java Sockets
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • 请大家推荐一下java里socket编程的资料。
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • JAVA中的 SOCKET能否与DELPHI中的 SOCKET进行通信
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • help! JAVA下有类似VC++ 下的socket 类吗?请各位高手看一下!!
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • 怎么样利用Socket进行Java网络编程
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • 有谁有java的Socket编程资料?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • JAVA网络编程(socket),用什么工具开发?怎么配置环境?
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 我现在刚刚学到JAVA的线程和socket,请问《JAVA 2宝典》和《JAVA核心技术卷2:高级特性》哪本书讲得比较好?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • linux下socket链接问题(java)
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • vc通过socket发送数据给java的问题
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • Java-IrDA socket API
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 怎么没有讨论XML的?哪位高手介绍介绍在JAVA中怎么使用XML?
  • java命名空间java.beans接口propertyeditor的类成员方法: getvalue定义及介绍
  • 急!!谁了解macintosh?能不能给我介绍介绍?是不是跟linux差不多?使用开发工具JDK,这是不是不JAVA?
  • java命名空间java.awt类container的类成员方法: getlayout定义及介绍
  • 各位高手,我初学java,以前是学VB的,请介绍一下学习java的经验
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请大家介绍一下java BEAN的入门读物吧
  • java命名空间java.beans类defaultpersistencedelegate的类成员方法: defaultpersistencedelegate定义及介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmversion定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getspecname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3