您的位置:首页 > 其它

套接字的(客户端与服务器端的连接)

2015-11-07 18:09 190 查看
Client.java文件:

import java.io.*;
import java.net.*;
public class Client {
public static void main(String args[]) {
String [] mess = {"1+1在什么情况下不等于2", "狗为什么不生跳蚤","什么东西能看、能吃、能坐"};//用String类定义了一个字符串对象数组mess
Socket mysocket;
DataInputStream in = null;  //数据输入流in
DataOutputStream out = null;  //数据输出流out
try {
mysocket = new Socket("127.0.0.1", 2010);   //Socket类客户端套接字对象mysocket
in = new DataInputStream(mysocket.getInputStream());
out = new DataOutputStream(mysocket.getOutputStream());
/*
* getInputStream()的返回值是InputStream类对象
* getOutputStream()的返回值是OutputStream类对象
* DataInputStream创建的对象是数据输入流
* DataOutputStream创建的对象是数据输出流
* DataInputStream类继承了InputStream类   比InputStream多了一些方法
* DataOutputStream与上同理
* */
for(int i = 0; i < mess.length; i++) {
out.writeUTF(mess[i]);//writeUTF的作用是写入一个字符串 它是DataOutputStream类中的一个方法
//此处是将mess[i]中的字符串写到out对象中
String s = in.readUTF(); //readUTF的作用是读取一个UTF字符串   它是DataInputStream类中的一个方法   返回值是一个字符串的引用
//in 读取信息  ,堵塞状态
System.out.println("客户端收到服务端的回答:"+s);
Thread.sleep(500);
}
}
catch(Exception e) {
System.out.println("服务器已经断开"+e);
}
}
}
//客户端的套接字和服务器端的套接字连接后
//客户端的输出数据流是服务器端的输入数据流
//客户端的输入数据流是服务器端的输出数据流


Server.java文件:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String args[]) {
String [] answer = {"在算错的情况下","狗就能生狗","电视、面包、沙发"};//String类定义了一个字符串对象数组answer
ServerSocket serverForClient = null;
Socket socketOnServer = null;  //声明一个临时的套接字   下面要用于接受服务器套接字连接上的客户端的套接字
DataOutputStream out = null;
DataInputStream in = null;
try {
serverForClient = new ServerSocket(2010);//服务器建立了一个ServerSocket对象serverForClient用于与客户端套接字连接起来
//从而达到客户端和服务器端的连接
//记忆方法:
//客户端的套接字用Socket类来定义
//服务器端的套接字用ServerSocket类来定义
}
catch(IOException e1) {
System.out.println(e1);
}
try {
System.out.println("等待客户呼叫");
socketOnServer = serverForClient.accept();  //用临时申请的socketOnServer套接字来接收通过服务器套接字连接上的客户端的套接字
//accept()方法返回客户端的套接字
out = new DataOutputStream(socketOnServer.getOutputStream());
in = new DataInputStream(socketOnServer.getInputStream());
for(int i = 0; i<answer.length; i++) {
String s = in.readUTF();
System.out.println("服务器收到客户的提问:"+s);
out.writeUTF(answer[i]);
Thread.sleep(500);
}
}
catch(Exception e) {
System.out.println("客户已经断开"+e);
}
}
}
//客户端的套接字和服务器端的套接字连接后
//服务器的输入数据流就是客户端的输出数据流
//服务器的输出数据流就是可独断的输入数据流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: