Java網絡編程2---Socket-TCP編程

Sockct:插座

Socket是關于TCP的。

端口號:兩個字節->65536個端口號,一個應用程序占多個端口號;

但是假設一個應用程序占一個端口號;一臺電腦會有65535個應用程序。

自己編寫程序要占用端口號1024以上后的。

80端口:網頁

端口號分為:TCP端口和UDP端口。每個有65535個端口。




通過管道(流)來說話

栗子:
服務器端:

package com.zhj.www;
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.*;
public class TCPServer {public static void main(String[] args)throws Exception {ServerSocket ss = new ServerSocket(6666);//服務器監聽6666端口口while(true) {	Socket s =ss.accept();//自身建立一個Socket與客戶端連接System.out.println("A client connect!");//阻塞式的連接,一個客戶端連接,另外一個客戶端不會鏈接。DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());dis.close();s.close();}}
}

客戶端:

package com.zhj.www;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.*;
public class TCPClient {public static void main(String[] args) throws Exception {Socket s = new Socket("127.0.0.1", 6666);//建立連接,client隨機某個端口去連接服務器的6666OutputStream oStream = s.getOutputStream();//拿到輸出管道;DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("hello server!");dataOutputStream.flush();dataOutputStream.close();s.close();}
}

-----------------------------------------------------------------------------

---------------------------------------------------------------------------->

栗子1:(一端說,一端聽):TestServer.java &&TestClient.java

服務器端:
package com.zhj.www;import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TestServer {/*拿到服務器端的數據寫到客戶端*/public static void main(String[] args) {try {ServerSocket  ss = new ServerSocket(8888);while(true) {Socket socket  = ss.accept();OutputStream oStream = socket.getOutputStream();DataOutputStream dataOutputStream = new DataOutputStream(oStream);dataOutputStream.writeUTF("Hello,"+socket.getInetAddress()+"port #"+socket.getPort()+" bye-bye");//客戶端的端口號是隨機的dataOutputStream.close();socket.close();}}catch (Exception e) {e.getStackTrace();System.out.println("程序運行出錯:"+e);}}}
客戶端:
package com.zhj.www;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
import java.net.Socket;public class TestClient {public static void main(String[] args) {try {Socket socket = new Socket("127.0.0.1", 8888);InputStream is =socket.getInputStream();DataInputStream dInputStream = new DataInputStream(is);System.out.print(dInputStream.readUTF());dInputStream.close();socket.close();}catch (ConnectException connExc) {connExc.getStackTrace();System.out.println("服務器連接失敗!");} catch (IOException e) {e.getStackTrace();}}}

--------------------------------------------------------------------------------->

栗子2(兩端都說,兩端都聽) TestSocketServer.java && TestSocketClient.java

服務器端:

package com.zhj.www;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TestSocketServer {public static void main(String[] args) {InputStream in = null;OutputStream out	= null;try {ServerSocket ss	= new ServerSocket(5888);Socket socket = ss.accept();in	= socket.getInputStream();out = socket.getOutputStream();DataOutputStream dataOutputStream	=	new DataOutputStream(out);DataInputStream dataInputStream = new DataInputStream(in);String string = null;if ((string = dataInputStream.readUTF()) != null) {System.out.println(string);System.out.println("from: "+socket.getInetAddress());System.out.println("Port:"+socket.getPort());}dataOutputStream.writeUTF("hi,hello");dataOutputStream.close();dataInputStream.close();socket.close();} catch (IOException e) {e.printStackTrace();}}
}

客戶端:

package com.zhj.www;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class TestSocketClient {public static void main(String[] args) {InputStream inputStream =null;OutputStream outputStream = null;try {Socket socket= new Socket("localhost", 5888);inputStream = socket.getInputStream();outputStream  =socket.getOutputStream();DataInputStream dataInputStream = new DataInputStream(inputStream);DataOutputStream dataOutputStream = new DataOutputStream(outputStream);dataOutputStream.writeUTF("hey");String string = null;while((string = dataInputStream.readUTF())!= null) {System.out.println(string);	}dataOutputStream.close();dataInputStream.close();socket.close();}catch (UnknownError e) {e.printStackTrace();} catch (IOException e) {e.getStackTrace();}}
}

栗子3:聊天程序:







本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274009.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

winform綁定多張圖片

開發winform程序的時候經常設計到要顯示多張圖片的問題,其解決思路一般是先遍歷文件夾中的所有圖片,然后再把這些圖片添加到ImageList控件中,最后再綁定顯示出來。這里我們介紹兩種綁定的方法: (一)動態生成…

Java網絡編程3---Socket-UDP編程

栗子:TestUDPServer.java 服務器端: package com.zhj.www;import java.net.DatagramPacket; import java.net.DatagramSocket;public class TestUDPServer {public static void main(String[] args)throws Exception {byte buf[] new byte[1024];Datagr…

iOS 6 自動布局入門

http://www.raywenderlich.com/zh-hans/22873/ios-6-自動布局-入門-1轉載于:https://www.cnblogs.com/ihojin/p/auto-layout.html

Java GUI 基礎知識

這部分主要包含AWT、組件和容器、布局管理器Component:所有可以和用戶交互的圖形元素,他的子類有:輸入框… Java.awt及其子包 Container:容器,容納其他各種各樣的Component的元素。 Panel:可以容納其他元素…

UVA11300

初步解題原理:代數運算單元素極值 代數運算: xi表示第i個給i-1的數量,正負表示給或得 c(a1a2a3....an)/n a1-x1x2c -->x2x1-a1c a2-x2x3c -->x3x1-a1-a22c a3-x3x4c -->x4x1-a1-a2-a33c ...... an-xnx1c -->xnx1-a1-a2-a3....-a(n-1)(n-1)c ansmax{|x1|…

Java GUI 基礎知識2 監聽機制

TestActionEvent.java沒有調用方法,但是有反應。反應自己要編寫程序有反應。 事件模型:一定要有某些反應。 寫程序,監聽的操作是自動發生的,一直監聽。鉤子函數,(回調函數) 怎么讓它自動執行&am…

求字符串的最長回文字串 O(n)

昨天參加了某公司的校園招聘的筆試題,做得慘不忍睹,其中就有這么一道算法設計題:求一個字符串的最長回文字串。我在ACM校隊選拔賽上遇到過這道題,當時用的后綴數組AC的,但是模板忘了沒寫出代碼來。 回頭我把這道題目再…

數據結構 二、向量(接口與實現and可擴容向量)

ADT操作實例:Disordered:顯示出3對逆序緊鄰對。Vector模板類初始有效空間為0;基于復制的構造描述區間:左閉右開 為什么*2?有限時間內不必要為擴容而打斷。 2、可擴充向量左移一位:加一倍

數據庫:mysql 獲取剛插入行id[轉]

我們在寫數據庫程序的時候,經常會需要獲取某個表中的最大序號數, 一般情況下獲取剛插入的數據的id,使用select max(id) from table 是可以的。但在多線程情況下,就不行了。 下面介紹三種方法 (1) getGeneratedKeys()方法: 程序片斷: Connection conn ; …

svn由于連接方在一段時間后沒有正確答復或連接的主機沒有反應連接嘗試失敗...

解決方法,關掉防火墻, service iptables status 查看iptables狀態 service iptables restart iptables服務重啟 service iptables stop iptables服務禁用 轉載于:https://www.cnblogs.com/jiqing9006/p/3347441.html

Android 服務(Service)

一、服務的解釋 服務(Service)是Android中實現后臺運行的解決方案,它適合那些去執行不需要和用戶交互而且還要求長期運行的任務。服務的運行不依賴任何的與任何用戶界面,即使程序被切換到后臺,或者用戶打開了另外一個應…

CenOS 配置C/C++語言

1.下載eclipseCDT組合包。 2.電腦上安裝GCC, G 3.在eclipse上創建一個C project 4. Eclipse CDT功能很強大,安裝完雖然可以編譯運行c程序,但有個問題,就是找不到c標準庫的頭文件,無法打開諸如之類的文件,編…

(數據結構)前綴,后綴以及中綴表達式

中綴表達式(中綴記法) 中綴表達式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處于操作數的中間。中綴表達式是人們常用的算術表示方法。 前綴表達式(前綴記法、波蘭式) 前綴表達式是一種沒有括號的算術表…

Moravec角點檢測算子

Moravec角點檢測算子 Moravec 在1981年提出Moravec角點檢測算子[1],并將它應用于立體匹配。 首先, 計算每個像素點的興趣值, 即以該像素點為中心, 取一個w*w(如:5x5)的方形窗口, 計算0度、45度、90度、135度四個方向灰度差的平方和, 取其中的最小值作為該像素點的興…

java習題-練習1

1、 Given the string, check if it is a palindrome.(回文) Example For inputString "aabaa", the output should becheckPalindrome(inputString) true;For inputString "abac", the output should becheckPalindrome(inputSt…

文件夾生成工具

很簡單的一個小工具,輸入一個字符串,可以為你生成相應的文件夾. 至于有什么用?我公司一個策劃拿一頓飯給我要的. 下載地址: http://pan.baidu.com/s/1d0ewl 轉載于:https://www.cnblogs.com/WhyEngine/p/3350053.html

java中System.exit(1)、System.exit(0)、以及return的區別

System.exit(0)是正常退出程序,而System.exit(1)或者說非0表示非正常退出程序System.exit(status)不管status為何值都會退出程序。 和return 相比有以下不同點:return是回到上一層,而System.exit(status)是回到最上層

(轉載)深入理解Linux中內存管理---分段與分頁簡介

首先,必須要闡述一下這篇文章的主題是Linux內存管理中的分段和分頁技術。 來回顧一下歷史,在早期的計算機中,程序是直接運行在物理內存上的。換句話說,就是程序在運行的過程中訪問的都是物理地址。如果這個系統只運行一個程序&…

eclipse解決Android Library Project jar包重復導致的問題

Android Studio部分情況下用起來還是有些不適應的地方,用eclipse熟練了,在趕項目進度的情況下還得重拾eclipse。下面是今天碰到的一個老問題。 1.在導入Android Library工程文件的時候要把library一起拷貝到workspace中 2.在導入的Android Library工程文…

java中main函數的args參數

先說一下args的作用:我們習慣將一些有用的參數傳遞給我們定義的函數,那么可曾想過有參數傳遞給main函數?args就是傳遞給main函數的一個數組參數。可是main函數作為程序(application程序)的入口點,是由系統自動調用的,怎…