Java涓殑Socket缂栫▼(二)-鎻愰珮

Java涓殑Socket缂栫▼(2)-鎻愰珮

鏃ユ棩琛岋紝涓嶆€曞崈涓囬噷锛涘父甯稿仛锛屼笉鎬曞崈涓囦簨銆?/strong>
鎰忔€濇槸璇达紝姣忓ぉ閮借蛋璺殑璇濓紝灏变笉鎬曡蛋鍗冮噷涓囬噷锛屾瘡澶╅兘鍋氫簨鐨勮瘽锛屽氨涓嶆€曞仛浜嗗崈浜嬩竾浜嬨€傚涔犱篃涓€鏍凤紝姣忓ぉ瀛︿竴鐐癸紝灏变笉鎬曞涔犱簡鍗冧竾鐭ヨ瘑銆?

涓婁竴娆℃垜浠Socket缂栫▼鏈変簡涓€涓垵姝ョ殑浜嗚В锛屼粖澶╂垜浠潵缁х画瀛︿範銆備笂涓€娆℃垜浠啓浜嗕竴涓畝鍗曠殑鏈嶅姟绔拰瀹㈡埛绔▼搴忥紝鍙槸瀹炵幇浜嗗鎴风鍐欙紝鏈嶅姟绔銆備粖澶╂垜浠潵瀹炵幇涓€涓湇鍔$鍜屽鎴风鍚屾椂璇诲啓鐨勭▼搴忋€?

闇€姹傦細瀹炵幇涓€涓湇鍔$鍜屽鎴风鍚屾椂璇诲啓銆?/strong>

涓轰簡渚夸簬澶у鏇村ソ鐨勭悊瑙o紝鎴戠敾浜嗕竴涓▼搴忔祦绋嬪浘锛岃櫧鐒朵笉鏄緢涓撲笟鍜岀編瑙傦紝浣嗘棬鍦ㄨ鏄庨棶棰樸€?

1銆佺▼搴忔祦绋嬪浘锛?/strong>

Java涓殑Socket缂栫▼(二)-鎻愰珮

2銆佷唬鐮佸疄鐜帮細

1锛夋湇鍔$浠g爜锛?/strong>

/**
 * 鏈嶅姟绔?
 * 闇€姹傦細鏈嶅姟绔拰瀹㈡埛绔悓鏃惰鍐?
 * @author Sam
 *
 */
public class EnhanceServer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			// 鍒涘缓涓€涓湇鍔$ServerSocket锛岀洃鍚寚瀹氱鍙g殑璇锋眰
			ServerSocket ss = new ServerSocket(9999);
			System.out.println("Server 绛夊緟瀹㈡埛绔帴鍏?..");
			// 鐩戝惉瀹㈡埛绔姹?
			Socket socket = ss.accept();
			// 涓庡鎴风寤虹珛杩炴帴涔嬪悗锛岃鍙栧鎴风鍙戣繃鏉ョ殑淇℃伅
			InputStream is = socket.getInputStream();
			
			byte[] buffer = new byte[1024];
			int len = 0;
			// 瀹氫箟涓€涓瓧绗︿覆鏋勫缓鍣紝鐢ㄤ簬瀛樺偍瀹㈡埛绔彂杩囨潵鐨勬暟鎹?
			StringBuilder sBuilder = new StringBuilder();
			int index;
			while ( (len=is.read(buffer)) != -1 ) {
				String temp = new String(buffer, 0, len);
				// 璇诲埌缁撴潫绗︼紝鍒欒烦鍑哄惊鐜?
				if ( (index=temp.indexOf("eof")) != -1 ) {
					// 鎴彇鎸囧畾闀垮害
					sBuilder.append(temp.substring(0, index));
					break;
				}
				// 濡傛灉娌℃湁璇诲埌缁撴潫绗︼紝鍒欑户缁鍙栵紝骞跺姞鍏ュ瓧绗︿覆鏋勫缓鍣?
				sBuilder.append(temp);
			}
			System.out.println("Server 鏉ヨ嚜瀹㈡埛绔殑淇℃伅 : " + sBuilder.toString());
			
			// 璇诲畬涔嬪悗锛屽線瀹㈡埛绔彂閫佸搷搴旀暟鎹?
			OutputStream out = socket.getOutputStream();
			out.write("Hello Client!".getBytes());
			out.write("eof".getBytes());// 鍐欎竴涓粨鏉熺
			out.flush();
			
			out.close();
			is.close();
			socket.close();
			ss.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


鏈嶅姟绔唬鐮佸垎鏋愶細
1锛変唬鐮佹祦绋嬶細鏈嶅姟绔厛璇诲彇瀹㈡埛绔彂閫佽繃鏉ョ殑鏁版嵁锛岀劧鍚庤緭鍑哄湪鎺у埗鍙颁腑锛岃瀹屼箣鍚庯紝鎺ョ潃寰€瀹㈡埛绔啓涓€娈靛洖搴旀暟鎹€?
鍓嶉潰鎴戜滑鎻愬埌鏈嶅姟绔湪鐩戝惉瀹㈡埛绔姹傛椂锛屼娇鐢ㄧ殑accept鏂规硶鏄樆濉炴柟娉曪紱
2锛夐棶棰樺師鍥狅細鍦ㄨ繖閲寃hile寰幆鍒ゆ柇鏉′欢涓殑read鏂规硶涔熸槸闃诲寮忔搷浣滅殑锛屼篃灏辨槸璇磜hile寰幆鍒ゆ柇鏉′欢涓綋璇诲埌鏁版嵁鏃讹紝灏变細鎵ц寰幆浣擄紝鍚﹀垯灏变竴鐩村浜庨樆濉炵姸鎬侊紝杩欐牱鍚庨潰鐨勪唬鐮佸氨姘歌繙鏃犳硶鎵ц浜嗐€?
3锛夎В鍐虫柟妗堬細鎵€浠ワ紝鎴戜滑閫氬父閮戒細绾﹀畾涓€涓粨鏉熸爣璁帮紝褰撴湇鍔$璇诲埌瀹㈡埛绔彂閫佽繃鏉ョ殑鏁版嵁鍖呭惈缁撴潫鏍囪鏃讹紝鏈嶅姟绔氨浼氳烦鍑哄惊鐜紝鎺ョ潃鎵ц寰€涓嬬殑浠g爜銆?
鍦ㄨ繖閲屾垜浠害瀹氱粨鏉熸爣璁颁负eof锛屾瘡娆″啓瀹屾暟鎹兘瑕佸啓涓€涓粨鏉熸爣璁帮紒

2锛夊鎴风浠g爜锛?/strong>

/**
 * 瀹㈡埛绔?
 * @author Sam
 *
 */
public class EnhanceClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			// 涓庢湇鍔$寤虹珛杩炴帴(鏈嶅姟绔富鏈哄彿锛屾湇鍔$鐩戝惉鐨勭鍙e彿)
			Socket socket = new Socket("127.0.0.1", 9999);
			// 涓庢湇鍔$寤虹珛杩炴帴涔嬪悗锛屽氨鍙互寰€鏈嶅姟绔啓鏁版嵁
			OutputStream out = socket.getOutputStream();
			// 寰€鏈嶅姟绔腑鍐欐暟鎹?
			out.write("Hello Server!".getBytes());
			out.write("eof".getBytes());// 鍐欎竴涓粨鏉熺锛岃〃绀哄啓鍏ュ畬姣?
			out.flush();
			
			// 鍐欏畬涔嬪悗锛岃幏鍙栨湇鍔$鐨勫搷搴旀暟鎹?
			InputStream is = socket.getInputStream();
			byte[] buffer = new byte[1024];
			int len = 0;
			// 瀹氫箟涓€涓猄tringBuilder瀛樺偍瀹㈡埛绔彂杩囨潵鐨勬暟鎹?
			StringBuilder sBuilder = new StringBuilder();
			int index;
			while ( (len=is.read(buffer)) != -1 ) {
				String temp = new String(buffer, 0, len);
				// 璇诲埌缁撴潫绗︼紝鍒欒烦鍑哄惊鐜?
				if ( (index=temp.indexOf("eof")) != -1) {
					sBuilder.append(temp.substring(0, index));
					break;
				}
				sBuilder.append(temp);
			}
			System.out.println("Client 鏉ヨ嚜鏈嶅姟绔殑淇℃伅 : " + sBuilder.toString());
			out.close();
			is.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


瀹㈡埛绔唬鐮佸垎鏋愶細
1锛?strong>浠g爜娴佺▼锛?/strong>
瀹㈡埛绔線鏈嶅姟绔啓涓€娈垫暟鎹紝鍐欏畬涔嬪悗锛屾帴鐫€璇诲彇鏈嶅姟绔繑鍥炵殑鍝嶅簲鏁版嵁锛屽苟杈撳嚭鍦ㄦ帶鍒跺彴涓€?
2锛夐棶棰樺師鍥狅細
鍚岀悊锛屽鎴风鍙戦€佹暟鎹畬姣曞悗锛屽線娴佷腑鍐欎竴涓粨鏉熸爣璁扮鍛婅瘔鏈嶅姟绔暟鎹凡缁忓彂閫佸畬姣曘€?

3銆佽繍琛岀粨鏋滐細
娉ㄦ剰锛氬厛杩愯Server绋嬪簭锛屽啀杩愯Client绋嬪簭銆傜粨鏋滃涓嬶細
1锛塖erver绋嬪簭鎺у埗鍙帮細

Java涓殑Socket缂栫▼(二)-鎻愰珮

2锛塁lient绋嬪簭鎺у埗鍙帮細

Java涓殑Socket缂栫▼(二)-鎻愰珮

4銆佹€荤粨锛?/strong>
杩欎究鏄湇鍔$鍜屽鎴风鍚屾椂閫氫俊鐨勭▼搴忋€傚鎴风鍙戦€佹暟鎹粰鏈嶅姟绔紝鏈嶅姟绔敹鍒版暟鎹箣鍚庡啀杩斿洖鐩稿簲鐨勭粨鏋滅粰瀹㈡埛绔€?