1. 程式人生 > >基於TCP協議的Socket通訊 實現使用者登入 以及服務端的相應

基於TCP協議的Socket通訊 實現使用者登入 以及服務端的相應

服務端

package com.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * Created by ChenHe on 2016/10/28.
 * 基於TCP
協議的Socket通訊,實現使用者登入 * 服務端 */ public class Server { public static void main(String[] args){ try { //1.建立一個服務端Socket,即ServerSocket,指定繫結的埠,並且監聽埠 ServerSocket serverSocket = new ServerSocket(8888); //2.呼叫accept()方法開始監聽,等待客戶端的連線 System.out.println("***i am server let us begin***"); Socket socket = serverSocket.accept();
//3.獲取輸入流,並讀取客戶端資訊 InputStream is = socket.getInputStream();//位元組輸入流 InputStreamReader isr = new InputStreamReader(is);//將位元組流轉換為字元流 BufferedReader br = new BufferedReader(isr);//為字元流新增緩衝 String info = null; while ((info = br.readLine())!=null){//迴圈讀取客戶端的資訊 System.out.println("The client say"+info);
} socket.shutdownInput();//關閉輸入流 //4.獲取輸出流,相應客戶端的請求 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os);//包裝為列印流 pw.write("Welcome !!!"); pw.flush();//呼叫flush()方法將緩衝輸出 //5.關閉資源 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }

伺服器列印資料

***i am server let us begin***
The client say錛�UserName: admin;PassWorld錛�123


Process finished with exit code 0

客戶端

package com.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
/**
 * Created by ChenHe on 2016/10/28
 * 客戶端.
 */
public class Client {

    public static void main(String[] args){

        try {
            //1.建立客戶端Socket,指定服務區地址和埠
Socket socket = new Socket("localhost",8888);
//2.獲取輸出流,向服務端傳送資訊
OutputStream os = socket.getOutputStream();//位元組輸出流
PrintWriter pw = new PrintWriter(os);//將輸出流包裝為列印流
pw.write("UserName: admin;PassWorld123");
pw.flush();//重新整理
socket.shutdownOutput();//關閉輸出流
//3.獲取輸入流,並讀取服務端的相應資訊
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String info = null;
            while ((info = br.readLine())!=null){
                System.out.println("i am client,server say:"+info);
}
            //4.關閉資源
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (IOException e) {
            e.printStackTrace();
}
    }
}

客戶端列印資料

i am client,server say:Welcome !!!

實現多執行緒訪問 

package com.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
/**
 * Created by ChenHe on 2016/10/28.
 * 伺服器執行緒處理類
*/
public class ServerThread extends Thread {

    Socket socket = null;
    public ServerThread(Socket socket){
        this.socket = socket;
}

    //執行緒執行的操作,相應客戶端的請求
public void run(){
        InputStream is = null;//位元組輸入流
InputStreamReader isr = null;//將位元組流轉換為字元流
BufferedReader br = null;//為字元流新增緩衝
PrintWriter pw = null;
OutputStream os = null;
        try {
            //3.獲取輸入流,並讀取客戶端資訊
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String info = null;
            while ((info = br.readLine())!=null){//迴圈讀取客戶端的資訊
System.out.println("The client say:"+info);
}


        socket.shutdownInput();//關閉輸入流
//4.獲取輸出流,相應客戶端的請求
os = socket.getOutputStream();
pw = new PrintWriter(os);
pw.write("Welcome !!!");
pw.flush();//呼叫flush()方法將緩衝輸出
} catch (IOException e) {
        e.printStackTrace();
}finally {
            //5.關閉資源
try {
                pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
} catch (IOException e) {
                e.printStackTrace();
}
        }

    }
}

服務端呼叫方法 

//迴圈監聽客戶端的連線
while (true) {
    //呼叫accept()方法開始監聽,等待客戶端的連線
socket = serverSocket.accept();
//建立一個新的執行緒
ServerThread serverThread = new ServerThread(socket);
//啟動執行緒
serverThread.start();
count++;
System.out.println("connect count:"+count);
InetAddress address = socket.getInetAddress();
System.out.println("ip:"+address);
}

相關推薦

基於TCP協議Socket通訊 實現使用者登入 以及服務相應

服務端 package com.example; import java.io.BufferedReader; import java.io.IOException; import java.

基於TCP協議通訊(基於Java語言)

        端與端通訊,經常由客戶端和服務端兩者組成,其中客戶端傳送請求給服務端,而服務端則響應請求。這兩者的通訊可以通過Socket來實現兩端的資料傳輸。其中Java自帶的Socket類可以建立客戶端socket,而ServerSocket可以建立一

Tcp協議socket通訊資料包粘包問題分析及解決方案

    當前在網路傳輸應用中,廣泛採用的是TCP/IP通訊協議及其標準的socket應用開發程式設計介面(API)。TCP/IP傳輸層有兩個並列的協議:TCP和UDP。其中TCP(transport control protocol,傳輸控制協議)是面向連線的,提供高可靠性服

unity基於TCPsocket通訊實現“群聊”功能

一般遊戲都有內建聊天系統,socket 也是常見網路通訊方式之一,現在使用 socket 基於 TCP 實現遊戲中“群聊”功能。 老規矩,先上效果圖: 客戶端:可以同時開啟多個 服務端: 接下來上程式碼: 服務端: using System; using System

java網路程式設計:9、基於TCPsocket程式設計(二)伺服器迴圈監聽接收多個客戶_多執行緒伺服器程式

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、核心程式碼編寫 1、伺服器端程式的編寫 2、客戶端程式的編寫 3、測試列印輸出 二、系列文章(java網路程式設計) 上篇講了基於tcp的程式設計的一些基礎知識

基於TCP協議Socket通訊案例

客戶端程式碼 import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; public class Main {

Java:基於TCP協議網路socket程式設計(實現C/S通訊)

目錄 一、前言:TCP原理簡介 二、Socket程式設計通訊 三、TCP伺服器端(具體程式碼) 四、TCP客戶端(具體程式碼) 五、通訊效果演示 六、“創意”機器人:價值一個億的AI核心程式碼(具體程式碼) 七、最後   一、前言:TCP原理簡介 首先,保證文章完整性,TC

基於TCP協議的項目架構之Socket流傳輸的實現

hand == buffered 可靠的 客戶端請求 utf 信息 color hdf 項目背景    某銀行的影像平臺由於使用時間長,服務器等配置原因,老影像系統滿足不了現在日益增長的數據量的需求,所以急需要升級改造。傳統的影像平臺使用的是Oracle數據庫和簡單的架構

TCP/IP協議Socket通訊案例演示

在伺服器端建立ServerScoket物件,並繫結埠號,用來讓客戶單進行訪問,客戶端建立Socket物件,繫結主機名(由於演示案例是在同一臺電腦上進行,所以主機名用了"localhost")和埠號,伺服器端監聽客戶單,通過輸入流讀取客戶端傳送的請求,輸出流相應客戶端請求。客戶端通過輸出流向伺服器端傳

http協議是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議。所有www都遵從這個協議。http是一個基於TCP/IP的通訊協議來傳遞html 檔案 查詢結果 圖片檔案等

HTTP 工作原理 HTTP協議工作於客戶端-服務端架構上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。 Web伺服器有:Apache伺服器,IIS伺服器(Internet Information Services)等。 Web伺服器根據接收到的請求後

**c++基於tcp協議socket程式設計實現一個簡單伺服器**

c++基於tcp協議的socket程式設計實現一個簡單伺服器 基於tcp的通訊,可以利益socket套接字實現。通訊,顧名思義需要伺服器和客戶端兩者進行資訊互動。 通過流程圖我們可以看到程式設計實現伺服器和客戶端的步驟大致相同,而伺服器則更為複雜一些。本文之給出了一個簡單的伺服器程式設計和

Java基於TCP協議Socket客戶檔案上傳與下載

import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.F

基於TCP協議的點對點通訊java程式,帶圖形介面

客戶端 package client; import java.awt.*; import java.awt.event.*; import java.io.DataInputStream; import java.io.DataOutputStream;

伺服器基於workerman,客戶基於ODSocket的TCPsocket通訊,本地測試

<?php require_once './workman/Autoloader.php'; use Workerman\Worker; // use Workerman\WebServer; // run MainThread $tcp_worker = new Worker ( "tcp://0

基於TCP協議實現Linux下客戶與伺服器之間的通訊,實現多執行緒、多程序伺服器

TCP是TCP/IP協議族中一個比較重要的協議,這是一種可靠、建立連結、面向位元組流的傳輸,工作在傳輸層。和TCP相對的不可靠、無連結、面向資料報的協議UDP,瞭解UDP客戶端與伺服器之間通訊請戳UDP協議實現的伺服器與客戶端通訊 TCP協議建立連線 首

java網路程式設計:8、基於TCPsocket程式設計(一)簡單的socket通訊_一個客戶

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於tcp的程式設計,就好像用電話進行交談一樣 二、在java中用於程式設計網路程式的類 三、套接字 + (輸出、輸入流) 1、伺服器程式編寫基本步驟: 2、客戶端程式

Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項

Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項 1、TCP網路程式設計架構 2、程式碼段 伺服器: #include <stdio.h> #include <stdlib.h&

Java---基於TCP協議的相互即時通訊小程式

這是幾年前,新浪的一個面試題~要求是3天之內實現~  通過TCP 協議,建立一個伺服器端。 通過配置伺服器端的IP和埠:  客戶端之間就可以相互通訊~ 上線了全部線上使用者會收到你上線的通知。  下線了全部的線上使用者會收到你下線的通知!  可以私

python學習_day30_基於tcp協議的粘包現象

接收數據 循環 tle ddr err shel starting 發生 dump 1、基於遠程執行命令的程序   需用到subprocess模塊 服務端: #1、執行客戶端發送的指令 import socket import subprocess phone=socke

Java基於TCPSocket編程練習

net sin oar servers nbsp number 資源 tis trace 環境:Notpad ++ 6.0 + JDK 6.0.31 問題:使用套接字編寫客戶—服務器程序,實現客戶—服務器交互計算。客戶將三角形3個邊的長度發給服務器,服務器把計算出的三角