代码展示
客户端
package com.java.study;
import java.io.*;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.*;
public class client1 {
public static void main(String[] args) throws IOException {
InetAddress inetAddress1=InetAddress.getLocalHost();
//创建socket对象
Socket socketclient=new Socket(inetAddress1,8777);
//向服务端输出一个字符流对象
OutputStream os=socketclient.getOutputStream();
//发送信息
PrintWriter pw1=new PrintWriter(new OutputStreamWriter(os));
pw1.write("这是客户端向服务端发送的一条信息");
pw1.flush();
pw1.close();
os.close();
//别忘了关闭tcp的连接
socketclient.close();
}
}
服务端
package com.java.study;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class server1 {
public static void main(String[] args) throws IOException {
//创建服务端socket对象
ServerSocket serverSocket=new ServerSocket(8777);
//监听客户端socket请求
Socket socketatclient=serverSocket.accept();
//以输入流的方式获取客户端发送的信息
InputStream is=socketatclient.getInputStream();
//接收信息后,对信息进行相关操作
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(is));
String input="";
while((input=bufferedReader.readLine())!=null){
System.out.println(socketatclient.getLocalAddress().getHostAddress()+":"+input);
}
//结尾操作
if (bufferedReader!=null){
bufferedReader.close();
}
if (is!=null){
is.close();
}
if (socketatclient!=null){
socketatclient.close();
}
if (serverSocket!=null){
serverSocket.close();
}
}
}
拓展
其实,有了上面这个例子,我们完全可以实现一个单向聊天的小案例,这种案例要求客户端发送一条消息服务端就要接受一条消息,所以不难理解,只需要让客户端能够循环发送信息,服务端能够循环接受消息就可以了
客户端
package com.java.study;
import java.net.*;
import java.io.*;
import java.util.*;
public class clienttest {
public static void main(String[] args) throws IOException {
Scanner scanner=new Scanner(System.in);
while(true){
InetAddress inetAddress=InetAddress.getLocalHost();
Socket client=new Socket(inetAddress,7777);
OutputStream os=client.getOutputStream();
PrintWriter pw=new PrintWriter(new OutputStreamWriter(os));
String str=scanner.next();
pw.println(str);
pw.flush();
pw.close();
os.close();
client.close();
}
}
}
服务端
package com.java.study;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class servertest {
public static void main(String[] args) throws IOException {
while(true){
ServerSocket serverSocket=new ServerSocket(7777);
Socket client =serverSocket.accept();
InputStream is=client.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(is));
String input="";
while((input=bufferedReader.readLine())!=null){
System.out.println(client.getLocalAddress().getHostName()+":"+input);
}
if (bufferedReader!=null){
bufferedReader.close();
}
if (is!=null){
is.close();
}
if (client!=null){
client.close();
}
if (serverSocket!=null){
serverSocket.close();
}
}
}
}