栗子
Server.java
/**
* 服务端
*/
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
//阻塞执行 接受客户端的连接请求
System.out.println("服务端已启动...");
Socket socket = ss.accept();
System.out.println("客户端进来了"+socket.getInetAddress());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client.java
/**
* 客户端
*/
public class Client {
public static void main(String[] args) {
//代表本机
/*String ip = "localhost";
String ip = "192.168.137.1";*/
String ip = "127.0.0.1";
try {
//自动建立链接
Socket socket = new Socket(ip,8888);
System.out.println("客户端连接成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
其中ip地址可以进入cmd输入ipconfig查看
这里标出的一个是ipv6的地址,一个是ipv4的地址
client中的ip地址以下两种方式都代表本机
String ip = "localhost";
String ip = "127.0.0.1";
先运行Server.java
然后打开一个新的Console View,运行Client
这时候打开第一个Console View,选择第一个进程,就可以查看Server的输出日志了
栗子2
下面做一个栗子,让服务端和客户端对话
Server.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端
*/
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
//阻塞执行 接受客户端的连接请求
System.out.println("服务端已启动...");
Socket socket = ss.accept();
System.out.println("客户端进来了"+socket.getInetAddress());
//获取输出流
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("请问您来点什么?");
dos.flush();
//接收请求
DataInputStream dis = new DataInputStream(socket.getInputStream());
String recept = dis.readUTF();
dos.writeUTF("对不起,没有"+recept);
dos.flush();
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.util.Scanner;
/**
* 客户端
*/
public class Client {
public static void main(String[] args) {
String ip = "localhost";
try {
//自动建立链接
Socket socket = new Socket(ip,8888);
System.out.println("客户端连接成功");
//读取服务端写过来的字符串
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
String text = dis.readUTF();
System.out.println("Server:"+text);
//在控制台接受客户端的参数
Scanner console = new Scanner(System.in);
String line = console.nextLine();
//输出给服务端
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(line);
dos.flush();
//读取服务端的回应
text = dis.readUTF();
System.out.println("Server:"+text);
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
首先运行服务端
然后运行客户端
接下来输入一些东西,然后回车
栗子3
对上面的栗子改进下,让它可以一直“聊天”
Server.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端
*/
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
//阻塞执行 接受客户端的连接请求
System.out.println("服务端已启动...");
Socket socket = ss.accept();
System.out.println("客户端进来了"+socket.getInetAddress());
//获取输出流
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("请问您来点什么?");
dos.flush();
//接收请求
DataInputStream dis = new DataInputStream(socket.getInputStream());
while(true){
String recept = dis.readUTF();
if(recept.equals("不吃了")){
break;
}
dos.writeUTF("对不起,没有"+recept+",换一个?");
dos.flush();
}
dos.writeUTF("一路走好");
dos.flush();
dos.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client.java
/**
* 客户端
*/
public class Client {
public static void main(String[] args) {
String ip = "localhost";
try {
//自动建立链接
Socket socket = new Socket(ip,8888);
System.out.println("客户端连接成功");
//读取服务端写过来的字符串
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
String text = dis.readUTF();
System.out.println("Server:"+text);
//在控制台接受客户端的参数
Scanner console = new Scanner(System.in);
while(true){
String line = console.nextLine();
//输出给服务端
dos.writeUTF(line);
dos.flush();
//读取服务端的回应
text = dis.readUTF();
System.out.println("Server:"+text);
if(text.equals("一路走好")){
break;
}
}
dos.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行服务端
运行客户端,并输入一些文字