您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
write是什么意思(java Socket 的简单使用 实现对话交流功能)
协议,服务器,客户端write是什么意思(java Socket 的简单使用 实现对话交流功能)
发布时间:2020-12-06加入收藏来源:互联网点击:
socket 简单的说就是处在用户端的服务端的一个套接字 封装了一定的函数和API
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
在服务端和客户端进行通信的时候,需要先进行通信连接。客户端:Socket s=new Socket("127.0.0.1",9999); 输入ip地址和端口号。
服务端:ServerSocket server=new ServerSocket(9999); Socket s=server.accept(); 获得端口号。以及数据。
Client:
package com.xu.chat;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
Socket s=null;
try {
s=new Socket("127.0.0.1",9999);
PrintWriter p=new PrintWriter(s.getOutputStream(),true);
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s1=sc.nextLine();
p.println(s1);
}
sc.close();
p.flush();
p.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Service:
package com.xu.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket server=null;
Socket s=null;
try {
server=new ServerSocket(9999);
s=server.accept();
boolean flag=true;
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(br);
while(flag){
String s1=br.readLine();
if(s1.trim().toLowerCase().equals("q")){
System.out.println("客户端不想玩了!");
flag=false;
}else{
System.out.println(s1);
}
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
s.close();
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
总结:socket 用法远远不仅如此 在底层的j2ee也有大量的应用,以后还要更加深入的了解。
第一部分、概念的理解
1、什么是Socket?
Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。
Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socket一定包含了通信的双发,即客户端(Client)与服务端(server)。
2、Socket的通信过程?
每一个应用或者说服务,都有一个端口。比如DNS的53端口,http的80端口。我们能由DNS请求到查询信息,是因为DNS服务器时时刻刻都在监听53端口,当收到我们的查询请求以后,就能够返回我们想要的IP信息。所以,从程序设计上来讲,应该包含以下步骤:
1)服务端利用Socket监听端口;
2)客户端发起连接;
3)服务端返回信息,建立连接,开始通信;
4)客户端,服务端断开连接。
3、Socket双方如何建立起连接?
以下过程用代码表示:
Server端:
1 intport = 2000;
2 IPEndPointServerEP = new IPEndPoint(IPAddress.Any,port);
3 Socketserver = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.TCP);
4 server.Bind(ServerEP);
5 server.Listen(0);
Client端:
1 intport = 2000;
2 IPAddressserverip = IPAddress.Parse("192.168.1.100");
3 IPEndPointEP = new IPEndPoint(server,port);
4 Socketserver = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
5 server.Bind(EP);
当服务器端接收到来自客户端的连接以后,需要新建一个socket来处理远端的信息。
下面一段代码应该在服务器端:
1 Socketclient = server.Accept();
以上很简单的几行代码,将在以后的网络编程中经常用到,后面还会有同步通讯、异步通讯、线程、委托与事件等等
第二部分、各协议的区别
TCP/IP SOCKET HTTP
网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;
传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。
http协议 对应于应用层
tcp协议 对应于传输层
ip协议 对应于网络层
三者本质上没有可比性。 何况HTTP协议是基于TCP连接的。
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。
我们在传输数据时,可以只使用传输层(TCP/IP),但是那样的话,由于没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用应用层协议,应用层协议很多,有HTTP、FTP、TELNET等等,也可以自己定义应用层协议。WEB使用HTTP作传输层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发送到网络上。
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
Http和Socket连接区别
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。
1、TCP连接
要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j 1),同时自己也发送一个SYN包(syn=k),即SYN ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k 1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
上一篇:wulumuqi(想知道乌鲁木齐在建的12条主要道路最新进展吗?详细介绍来了)
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |