今天带大家来学习下Java的网络编程实战。Socket编程又称之为套接字的编程,还是来看看代码吧。主要涉及到客户端和服务器端的编程,我们先来看看服务器端的编程.代码如下.
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author hackbase 初步的认识Java的网络编程
* Socket编程主要涉及到客户端和服务器端的编程,
* Java网络编程主要涉及到的就是套接字的编程.
* 简单来说Socket编程涉及到套接字编程.Socket就是两台主机
* 之间的连接的逻辑端点,端口号从0到65535 1-1024之间的端口
* 被操作系统所占有.一般是不能使用的。一般选择大于这个
* 范围的端口.
*
*
* socket编程整体流程
* Socket编程主要涉及到客户端和服务器端两个方面,
* 首先是在服务器端创建一个服务器套接字(ServerSocket),
* 并把它附加到一个端口上,服务器从这个端口监听连接。
* 端口号的范围是0到65536,但是0到1024是为特权服务保留的端口号,
* 我们可以选择任意一个当前没有被其他进程使用的端口。
*
* 客户端请求与服务器进行连接的时候,
* 根据服务器的域名或者IP地址,加上端口号,打开一个套接字。
* 当服务器接受连接后,服务器和客户端之间的通信就像输入输出流一样进行操作
*/
public class SocketServer {
public static void main(String[] args) {
//创建端口号
int port =7000;
//在端口上创建一个套接字
try {
ServerSocket serversocket=new ServerSocket(port);
//监听来自客户端的请求连接
Socket socket=serversocket.accept();
//分别创建数据的输入流和输出流.
DataInputStream dis=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
do {
double length=dis.readDouble();
System.out.println("服务器收到的边长的数据为"+length);
double result=length*length;
dos.writeDouble(result);
dos.flush();
}while(dis.readInt()!=0);
socket.close();
serversocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
下面我们来看看客户端的编程,代码如下截图.
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
/**
* @author hackbase 下面来编写客户端的代码程序.
*
*/
public class Client {
public static void main(String[] args) throws IOException {
int port =7000;
String host="localhost";
//创建一个套接字,并将其连接到指定的端口.
Socket socket=new Socket(host,port);
DataInputStream Dis=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream Dos=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
//创建一个扫描器用于从控制套得到得到数据.
Scanner sc=new Scanner(System.in);
Boolean flag=false;
while(!flag){
System.out.println("输入正方形的边长.....");
double length=sc.nextDouble();
Dos.writeDouble(length);
Dos.flush();
double area=Dis.readDouble();
System.out.println("服务器返回的面积为;"+area);
while(true){
System.out.println("继续计算码?(Y/n)");
String str=sc.next();
if(str.equalsIgnoreCase("N")){
Dos.writeInt(0);
Dos.flush();
flag=true;
break;
}else if(str.equalsIgnoreCase("Y")){
Dos.writeInt(1);
Dos.flush();
break;
}
}
}
socket.close();
}
}
代码难度不是很大,这里就不多介绍了,这里要注意,这里只是涉及到一个客户端连接到服务器的操作实例.在后面的博客里面涉及到多个客户端连接到一个服务器的实例来实现多人聊天的例子.