Java系列讲座一:TCP方式Socket通信案例讲解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java系列讲座一:TCP方式Socket通信案例讲解相关的知识,希望对你有一定的参考价值。

开发网络通信软件,如QQ,阿里旺旺等即时通讯软件时,Socket通信是必备的基础知识,今天跟大家谈谈Socket通信中TCP方式通信的软件开发步骤及主要代码讲解:

第一步:开发服务器端程序Server.java,源代码如下:

package T16;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
//服务器端程序
public static void main(String[] args) {
/**
 * 1.创建服务器端ServerSocket,指定端口,有多块网卡时可以指定IP
 * 参数1:端口
 * 参数2:等待排队的客户端数量
 */
try {
//1.创建服务器端ServerSocket
ServerSocket serverSocket = new ServerSocket(8888,5);
System.out.println("服务器启动成功:"+serverSocket.toString());
//2.等待客户连接
Socket clientSocket = serverSocket.accept();
System.out.println("有客户来,请接客...........");
//3.绑定输入流
InputStream is = clientSocket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
//4.绑定输出流
OutputStream os = clientSocket.getOutputStream();
PrintStream ps = new PrintStream(os);
//5.接收数据
System.out.println("服务器端接收:"+br.readLine());
//6.发送数据
String str = "欢迎连接到本服务器.";
ps.println(str);
//7.关闭socket通信
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


第二步:开发客户端程序Client.java,源代码如下:

package T16;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Calendar;

public class Client {

/**
 * 客户端程序:
 * 1.指定服务器的IP地址;
 * 2.指定服务器的端口;
 * 
 * */
public static void main(String[] args) {
try {
//1.创建客户端Socket;
Socket socket = new Socket("127.0.0.1",8888);
System.out.println("连接服务器成功....");
//2.绑定输入输出流
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
//3.发送数据
ps.println("我是客户端,请求连接...");
//4.接收数据
System.out.println("客户端接收服务器数据:"+br.readLine());
//5.关闭Socket
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


第三步:先运行服务器端程序,再运行客户端程序,可以看到网络传输后的打印结果


说明:该程序是一个比较简单的入门级代码,整个程序只能进行一次网络通信,如果需要做成一个可以不断的通信软件的软件,还要用到多线程,IO流操作,数据库操作等诸多技术综合应用。


如果大家有兴趣可以看看我的 java从入门到精通+QQ即时通讯软件项目实训的教学视频,链接地址:http://edu.51cto.com/course/6946.html 

以上是关于Java系列讲座一:TCP方式Socket通信案例讲解的主要内容,如果未能解决你的问题,请参考以下文章

Java系列讲座二:Socket网络通信实现聊天软件项目讲解(UDP)

JAVA通信系列一:Java Socket技术总结

Java Socket实现基于TCP和UDP多线程通信

java socket之传输实体类对象

基于多线程的TCP socket通信经典案例

Java Socket通信