Socket介绍
套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。
当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。
java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。
Server端和Client端发送信息(一发一收,交替实行)
服务器端代码
package network_coding;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server_Chat {
public static void main(String[] args) {
try {
//服务端打开8888接口
ServerSocket ss = new ServerSocket(8888);
System.out.println("监听在端口号:8888");
Socket s = ss.accept();
InputStream is = s.getInputStream();
DataInputStream dis = new DataInputStream(is);
//把输出流封装在DataOutputStream中
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
/*
* 因为代码编写的时候,默认是客户端先发送消息,所以服务器这边应该先接收信息,再入发送信息。这个逻辑关系不能乱。
*/
while (true) {
//使用readUTF读取字符串
String msg = dis.readUTF();
System.out.println("收到客户端信息:"+msg);
Scanner sc = new Scanner(System.in);
String str = sc.next();
dos.writeUTF(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端代码
package network_coding;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client_Chat {
public static void main(String[] args) {
try {
//连接到本机的8888端口
Socket s = new Socket("127.0.0.1", 8888);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os