TCP实现聊天
TCP实现聊天
1.客户端
1>连接服务器Socket
2>发送消息
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class TcpServerDemo {
//客户端
public static void main(String[] args) {
Socket socket = null;
OutputStream os = null;
try {
//要知道服务器的地址
InetAddress serverIP = InetAddress.getByName("127.0.0.1") ;
int port = 9999;
//创建一个sockt连接
socket = new Socket(serverIP,port) ;
//发送消息
os = socket.getOutputStream();
os.write("你好".getBytes()) ;
} catch (IOException e) {
e.printStackTrace();
} finally {
if(os != null)
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
if(socket != null){
try {
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
2.服务端
1>建立服务的端口 ServerSocket
2>等待用户的连接 accept
3>接收用户的消息
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpClientDemo {
//服务端
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
//我得有一个地址
serverSocket = new ServerSocket(9999) ;
//等待客户端连接
socket = serverSocket.accept() ;
//读取客户端的消息
is = socket.getInputStream();
//管道流
baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024] ;
int len;
while((len = is.read(buffer)) != -1){
baos.write(buffer,0,len) ;
}
System.out.println(baos.toString());
/*
byte[] buffer = new byte[1024];
int len;
while((len = is.read(buffer)) != -1){
String msg = new String(buffer,0,len);
System.out.println(msg);
}
*/
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭资源
if (baos != null){
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is != null)
try {
is.close() ;
} catch (IOException e) {
e.printStackTrace();
}
if (socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
注意先启动服务端再启动客户端

浙公网安备 33010602011771号