A. 在java中实现TCP协议编程中怎么传
在Java中实现TCP协议编程
ServerSocket:编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket
构造方法:
ServerSocket(intport):创建绑定到特定端口的服务器套接字
ServerSocket(intport,intbacklog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。
ServerSocket(intport,intbacklog,InetAddressbindAddr):使用指定的端口、侦听backlog和要绑定到的本地IP地址创建服务器。
Socket:客户端要与服务器建立连接,必须先创建一个Socket对象
常用构造方法
Socket(Stringhost,intport):创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddressaddress,intport):创建一个流套接字并将其连接到指定IP地址的指定端口号。
服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。
TCP服务器与TCP客户端间的数据的接受图示:
用TCP实现服务器与客户端的“聊天”:
实例代码:
客户端:
packagecom.hbsi.net;
importjava.net.Socket;
importjava.io.*;
publicclassTcpClient{
publicstaticvoidmain(String[]args)throwsException{
//1.建立tcp客户端socket,要确定要连接的服务器ip,port
Sockets=newSocket("192.168.49.87",9009);
//获取键盘录入
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//2.通过建立的socket,获取输出流对象
//数据输出给服务器端
OutputStreamout=s.getOutputStream();
BufferedWriterbwout=newBufferedWriter(newOutputStreamWriter(out));
//获取服务器端返回的数据
//读取服务器端发过来的信息InputStreamReader()
BufferedReaderbrin=newBufferedReader(newInputStreamReader(
s.getInputStream()));
Stringline=null;
while((line=br.readLine())!=null){
if(line.equals("over"))
break;
bwout.write(line);
bwout.newLine();
bwout.flush();
Stringstr=brin.readLine();
System.out.println("server:"+str);
}
br.close();
s.close();
}
}
服务器端:
packagecom.hbsi.net;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassTcpServer{
publicstaticvoidmain(String[]args)throwsException{
//1.建立服务器socket
ServerSocketss=newServerSocket(9009);
//2.调用accept()
Sockets=ss.accept();
System.out.println(s.getInetAddress().getHostAddress()
+"...connection");
//读取客户的信息的输入流
InputStreamin=s.getInputStream();
BufferedReaderbrin=newBufferedReader(newInputStreamReader(in));
//向客户端发送信息输出流,服务端向客户端返回信息OutputStreamWriter()
BufferedWriterbrout=newBufferedWriter(newOutputStreamWriter(
s.getOutputStream())); Stringline=null;
while((line=brin.readLine())!=null){
System.out.println("client:"+line);
brout.write(line.toUpperCase());//服务器端收到信息后,将信息转为大写返回给客户端toUpperCase()
brout.newLine();
brout.flush();
}
s.close();
ss.close();
}
}
B. java中的socket编程是作什么的
Socket,又称为套接字,是计算机网络通信的基本技术之一。如今,大多数基于网络的软件,如浏览器、即时通讯工具甚至是P2P下载,都是基于Socket实现的。本文将介绍基于TCP/IP的Socket编程,并展示如何编写客户端和服务器程序。
在接下来的示例中,我们将使用基于TCP/IP协议的Socket编程,因为这个协议在实际应用中比UDP/IP更为广泛。所有与Socket相关的类都位于java.net包下,因此在进行Socket编程时需要引入这个包。
接下来是写入数据的过程。客户端的Socket对象可以得到一个OutputStream对象,然后可以通过这个对象写入数据,类似于文件输入输出的处理代码。
打开服务器端的Socket也很简单。通过Socket对象,可以获取一个InputStream对象,然后像处理文件输入输出一样读取数据。这里我们将读取的数据打印出来。
使用Socket实现一个回声服务器的功能,就是服务器会将客户端发送过来的数据传回给客户端。具体实现时,服务器端会监听特定的端口,当有客户端连接时,服务器会接收客户端发送的数据,并将这些数据原样返回给客户端。
客户端则需要知道服务器的IP地址和端口号,然后通过Socket对象建立与服务器的连接。客户端发送数据后,会等待服务器的响应,服务器接收到数据后,会将数据返回给客户端。客户端接收到返回的数据后,就可以处理这些数据了。
Socket编程是构建网络应用的重要基础,通过上述示例,我们可以看到Socket的使用并不复杂。只要掌握了基本的Socket编程方法,就可以开发出各种基于网络的应用程序。
C. java编程中,Socket通信是怎么实现的
java编程对于Socket之间的通信过程如下:
服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:
publicclassServer{
publicstaticvoidmain(Stringargs[])throwsIOException{
//为了简单起见,所有的异常信息都往外抛
intport=8899;
//定义一个ServerSocket监听在端口8899上
ServerSocketserver=newServerSocket(port);
//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的
Socketsocket=server.accept();
//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。
Readerreader=newInputStreamReader(socket.getInputStream());
charchars[]=newchar[64];
intlen;
StringBuildersb=newStringBuilder();
while((len=reader.read(chars))!=-1){
sb.append(newString(chars,0,len));
}
System.out.println("fromclient:"+sb);
reader.close();
socket.close();
server.close();
}
}
客户端代码
Java代码publicclassClient{
publicstaticvoidmain(Stringargs[])throwsException{
//为了简单起见,所有的异常都直接往外抛
Stringhost="127.0.0.1";//要连接的服务端IP地址
intport=8899;//要连接的服务端对应的监听端口
//与服务端建立连接
Socketclient=newSocket(host,port);
//建立连接后就可以往服务端写数据了
Writerwriter=newOutputStreamWriter(client.getOutputStream());
writer.write("HelloServer.");
writer.flush();//写完后要记得flush
writer.close();
client.close();
}
}
D. 浅谈Java中如何利用socket进行网络编程(一)
Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处理用户的请求和响应。利用SOCKET类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在JAVA中如何利用socket进行网络编程。 在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。 程序可以对这些数据流根据需要进行进一步的封装。本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。 一、建立服务器类 Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。ServerSocket server = new ServerSocket(9998) 这条语句创建了一个服务器对象,这个服务器使用9998号端口。当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且server.accept()方法会创建一个Socket对象。服务器端便可以利用这个Socket对象与客户进行通讯。Socket incoming = server.accept() 进而得到输入流和输出流,并进行封装BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream())); PrintWriter out = new PrintWriter(incoming.getOutputStream(),true); 随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。从而可以根据程序的需要对客户端的不同请求进行回应。
E. java中什么是socket编程
网络上的两个程序来通过一个双向自的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。
但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。