Java利用TCP协议实现客户端与服务器通信【附通信源码】

服务器 0

服务器端程序

======

package server_1;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class MyTcp {

private ServerSocket server; //设置服务器套接字

private Socket client; //设置客户端套接字

//连接客户端函数

void getServer()

{

try {

server = new ServerSocket(1100); //建立服务器 端口为1100

System.out.println(“服务器建立成功!正在等待连接…”);

client = server.accept(); //调用服务器函数对客户端进行连接

System.out.println(“客户端连接成功!ip为:” + client.getInetAddress()); //返回客户端IP

getClientMessage(); //调用信息传输和接收函数

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

void getClientMessage()

{

try {

while (true) {

InputStream is = client.getInputStream(); //获取到客户端的输入流

byte[] b = new byte[1024]; //定义字节数组

int len = is.read(b); //由于信息的传输是以二进制的形式,所以要以二进制的形式进行数据的读取

String data = new String(b, 0,len);

System.out.println(“客户端发来消息:” + data);

//定义发送给客户端的输出流

OutputStream put = client.getOutputStream();

String putText = “我已经收到!欢迎你!”;

put.write(putText.getBytes()); //将输出流信息以二进制的形式进行写入

}

} catch (Exception e) {

// TODO: handle exception

}

try {

//判断客户端字节流不是空,则关闭客户端

if (server != null) {

server.close();

}

} catch (Exception e) {

// TODO: handle exception

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

MyTcp myTcp = new MyTcp(); //调用该类生成对象

myTcp.getServer(); //调用方法

}

}

客户端程序

=====

package client_1;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

public class MyClient {

private Socket client; //定义客户端套接字

//建立客户端函数

void getClient()

{

try {

client = new Socket(“127.0.0.1”, 1100); //建立客户端,使用的IP为127.0.0.1,端口和服务器一样为1100

System.out.println(“客户端建立成功!”);

setClientMessage(); //调用客户端信息写入函数

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//定义客户端信息写入函数

void setClientMessage()

{

try {

OutputStream pt = client.getOutputStream(); //建立客户端信息输出流

String printText = “服务器你好!我是客户端!”;

pt.write(printText.getBytes()); //以二进制的形式将信息进行输出

InputStream input = client.getInputStream(); //建立客户端信息输入流

byte [] b = new byte[1024]; //定义字节数组

int len = input.read(b); //读取接收的二进制信息流

String data = new String(b, 0,len);

System.out.println(“收到服务器消息:” + data);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

//如果客户端信息流不为空,则说明客户端已经建立连接,关闭客户端

if (client != null) {

client.close();

}

} catch (Exception e) {

// TODO: handle exception

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

//生成客户端类对象

MyClient myClient = new MyClient();

最后

金三银四到了,送上一个小福利!

static void main(String[] args) {

// TODO Auto-generated method stub

//生成客户端类对象

MyClient myClient = new MyClient();

最后

金三银四到了,送上一个小福利!

[外链图片转存中…(img-86rIUTXY-1714343841852)]

[外链图片转存中…(img-wPrnG3x8-1714343841852)]

[外链图片转存中…(img-X1SKa10v-1714343841852)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

也许您对下面的内容还感兴趣: