java编程案例
client
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
public class Client {
public int ServerPort;
Socket socket;
public Client(int serverPort) throws IOException {
this.ServerPort = serverPort;
socket=new Socket(InetAddress.getLocalHost(),ServerPort);
}
//接收服务器传来的消息.因为要一直接收所以要一直等着
public void receive() {
try {
//获取输入流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
//接收数据
String str=in.readLine();
System.out.println("服务器说:"+str);
} catch (IOException e) {
e.printStackTrace();
}
}
//给服务器发消息
public void send() throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"));
Scanner scanner=new Scanner(System.in);
String sendInfo=scanner.nextLine();
bw.write(sendInfo);
bw.newLine();
bw.flush();
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) throws IOException {
Client client1=new Client(1001);
client1.send();
while(true)
client1.receive();
}
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Scanner;
public class ServerListen implements Runnable{
int port;
ServerListen(int port)
{
this.port=port;
}
@Override
public void run() {
//监听端口号
try {
//1.定义一个服务器套接字
ServerSocket listener=new ServerSocket(port);
//2.用一个socket来接收服务器收到的用户传过来的信息
//客户端没发消息的时候阻塞,有消息的时候就进入运行态
Socket socket=listener.accept();
//3.获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
//接收消息
String data=in.readLine();
String clientHost=socket.getLocalAddress().toString();
String clientPort=Integer.toString(socket.getPort()) ;
System.out.println(clientHost+":"+socket.getPort()+" connecting to port "+port);//返回socket对象与服务器连接的端口号
System.out.println("and send:"+data);
//4.告诉客户端已经收到
ServerSend(clientPort,socket);
} catch (IOException e) {
e.printStackTrace();
}
}
public void ServerSend(String clientPort, Socket socket) throws IOException {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8));
//发送消息
Scanner scanner=new Scanner(System.in);
String sendInfo=scanner.nextLine();
out.write(Arrays.toString(clientPort.getBytes(StandardCharsets.UTF_8)) +":"+sendInfo);
out.newLine();
out.flush();
}
}
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public class Server {
//用多线程监听每一个用户(其实是用户注册就增加一个监听)
public static void main(String[] args) {
//创建一个监听器监听1001,1002,1003端口
ServerListen serverListen=new ServerListen(1001);
ServerListen serverListen2=new ServerListen(1002);
ServerListen serverListen3=new ServerListen(1003);
Thread thread=new Thread(serverListen);
Thread thread2=new Thread(serverListen2);
Thread thread3=new Thread(serverListen3);
thread.start();
thread2.start();
thread3.start();
}
//用某个端口号给某个套接字发信息
public void ServerSend(String clientPort, Socket socket) throws IOException {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8));
//发送消息
out.write(Arrays.toString(clientPort.getBytes(StandardCharsets.UTF_8)) +":"+" hello");
out.newLine();
out.flush();
}
}
版权声明:本文为timoraty原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。