发送数据:
1、创建Socket链接,需要ip地址和端口
2、写出数据
3、关闭连接
接收数据:
1、创建链接,并且需要端口号、
2、获取发送端的socket对象
3、接受数据
4、关闭连接
package TCP;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Micsal
* @date 2020年9月1日
* @version :
* @description: TCP的聊天室
*/
public class TCPConversion {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable r1 = new Runnable() {// 发送
@Override
public void run() {
// TODO Auto-generated method stub
try {
Socket so = new Socket(InetAddress.getByName("192.168.120.28"), 10004);
OutputStream out = so.getOutputStream();// 字节输出流
String str = null;
System.out.print("发送:");
while ((str = br.readLine()) != null) {
out.write(str.getBytes("UTF-8"));// 写出数据
if (str.equals("quit")) {
break;
}
System.out.print("发送:");
}
so.close();
} catch (Exception e) {
e.printStackTrace();
}
}
};
Runnable r2 = new Runnable() {// 接收
@Override
public void run() {
// TODO Auto-generated method stub
try {
ServerSocket ss = new ServerSocket(10004);// 创建接收链接
Socket so = ss.accept(); // 侦听要连接到此套接字并接受它。
while (true) {
InputStream in = so.getInputStream();// 获取输入流:实际上就是数据
byte[] buf = new byte[1024];
int len = in.read(buf);// 得到内容
String ip = so.getInetAddress().getHostAddress();
String msg = new String(buf, 0, len);
System.out.println(ip + ": " + msg);
if (msg.equals("quit")) {
break;
}
}
ss.close();
} catch (Exception e) {
e.printStackTrace();
}
}
};
ExecutorService es = Executors.newFixedThreadPool(2);
es.submit(r2);
es.submit(r1);
}// main
}// class
本文介绍了使用Java进行TCP协议的数据发送和接收,包括创建Socket链接,指定IP地址和端口,写出及读取数据,以及如何通过多线程实现简单的聊天室功能。
9316

被折叠的 条评论
为什么被折叠?



