1、TCP服务端
package com.example;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyTcpServer {
public static void main(String [] args) throws Exception{
new TcpServer().listen();//创建TCPServer对象,并调用kisten()方法
}
}
//TCP服务端
class TcpServer{
private static final int PORT=7788;//定义一个端口
public void listen() throws Exception{ //定义一个listen方法,抛出异常
ServerSocket serverSocket=new ServerSocket(PORT);//创建ServerSocket对象
Socket client=serverSocket.accept();//调用ServerSocket的accept()方法接受数据
OutputStream os=client.getOutputStream(); //获取客户端的输出流
System.out.println("开始与客户端交互数据");
os.write(("Hello world").getBytes());
Thread.sleep(5000); //模拟执行其他功能占用时间
System.out.println("结束与客户端数据交互");
os.close();
client.close();
}
}
2、TCP 客户端
package com.example;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
public class MyTcpClient {
public static void main(String [] args) throws Exception{
new TcpClient().connect();
}
}
class TcpClient{
private static final int PORT = 7788; //服务端的端口号
public void connect () throws Exception{
//创建一个socket并链接到给出地址和端口号的计算机
Socket client=new Socket(InetAddress.getLocalHost(),PORT);
InputStream is=client.getInputStream(); //得到接收数据流
byte [] buf=new byte[1024];//定义1924个字节数组的缓冲区
int len=is.read(buf);//将数据读到缓冲区
System.out.println(new String(buf,0,len)); //将缓冲区中的数据输出
client.close(); //关闭socket对象,释放资源
}
}
3、多线程tcpserver
package com.example;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyTcpThread {
public static void main(String [] args) throws Exception{
new TcpServer().listen();//创建TcpServer对象,并调用listen()方法
}
}
//TCp服务端
class TcpServer{
private static final int PORT=7788; //定义一个静态端口号
public void listen() throws Exception{
//创建socket对象,监听指定的端口
ServerSocket serverSocket=new ServerSocket(PORT);
//使用while循环不停的接收客户端的发送请求
while(true){
//调用ServerSocket的accept()方法与客户建立链接
final Socket client=serverSocket.accept();
//下面的代码用于开创一个新的线程
new Thread(){
public void run(){
OutputStream os;//定义一个输出流对象
try{
os=client.getOutputStream();//获取客户端的输出流
System.out.println("开始与客户端交互数据");
os.write(("Hello Word").getBytes());
Thread.sleep(5000); //线程休眠
System.out.println("结束与客户端交互");
os.close(); //关闭输出流
client.close(); //关闭socket 对象
}catch(Exception e){
e.printStackTrace();
}
}
}.start();
}
}
}
参考文档:
Java基础入门 传智博客高教产品研发部
本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。