這篇文章主要介紹了java中如何利用TCP實現聊天功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
TCP
TCP協議是面向連接、保證高可靠性(數據無丟失、數據無失序、數據無錯誤、數據無重復到達)傳輸層協議。
TCP通過三次握手建立連接,通訊完成時要拆除連接,由于TCP是面向連接的所以只能用于端到端的通訊。
示例代碼
使用tcp協議實現的簡單聊天功能(非常簡單的)
思想:使用2個線程,一個線程是用來接收消息的,另一個線程是用來發消息的。
客戶端Demo代碼:
public class SendDemo {
public static void main(String[] args) throws Exception{
Socket socket= new Socket(InetAddress.getLocalHost(),8888);
SendImpl sendImpl= new SendImpl(socket);
//發送的線程
new Thread(sendImpl).start();
//接收的線程
ReciveImpl reciveImpl=new ReciveImpl(socket);
new Thread(reciveImpl).start();
}
}服務器端Demo代碼:
public class ServerDemo {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket =new ServerSocket(8888);
Socket socket=serverSocket.accept();
SendImpl sendImpl= new SendImpl(socket);
new Thread(sendImpl).start();
ReciveImpl reciveImpl=new ReciveImpl(socket);
new Thread(reciveImpl).start();
}
}發送線程的Demo代碼:
public class SendImpl implements Runnable{
private Socket socket;
public SendImpl(Socket socket) {
this.socket=socket;
// TODO Auto-generated constructor stub
}
@Override
public void run() {
Scanner scanner=new Scanner(System.in);
while(true){
try {
OutputStream outputStream = socket.getOutputStream();
String string= scanner.nextLine();
outputStream.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}接收線程的Demo代碼:
public class ReciveImpl implements Runnable {
private Socket socket;
public ReciveImpl(Socket socket) {
this.socket=socket;
// TODO Auto-generated constructor stub
}
@Override
public void run() {
while(true ){
try {
InputStream inputStream = socket.getInputStream();
byte[] b=new byte[1024];
int len= inputStream.read(b);
System.out.println("收到消息:"+new String(b,0,len));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}感謝你能夠認真閱讀完這篇文章,希望小編分享的“java中如何利用TCP實現聊天功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。