學(xué)習(xí)net包---簡單的socket通訊

          本篇文章主要學(xué)習(xí)net包中socket類及serversocket的使用,亦即通常所說的socket編程(網(wǎng)絡(luò)編程的方法很多,socket只是其中一種).初步學(xué)習(xí),記下來,不對的地方請指教.程序代碼如下:

        1. 服務(wù)器端代碼:
          package test.net;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.PrintWriter;
          import java.net.ServerSocket;
          import java.net.Socket;

          public class socketServer {
          ?public static void main(String args[]){
          ??try{
          ???ServerSocket server = new ServerSocket(2000);
          ???Socket client = server.accept();?//服務(wù)器偵聽端口并接受到此套接字的連接
          ???BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));?//接收客戶端傳遞的數(shù)據(jù)流
          ???PrintWriter out=new PrintWriter(client.getOutputStream());? //服務(wù)器的返回值
          ???while(true){
          ????String str = in.readLine();
          ????System.out.println("Client: "+str);
          ????
          ????out.println("... received!");
          ????out.flush();
          ????if (str.equals("end")){
          ?????break;
          ????}
          ???}
          ???client.close();
          ??}catch(IOException e){
          ???e.printStackTrace();
          ??}
          ??
          ?}
          }

        2. 客戶端程序代碼:
          package com;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.PrintWriter;
          import java.net.Socket;
          import java.net.UnknownHostException;

          public class clientSocket {
          ?public static void main(String[] args){
          ??try{
          ???Socket server = new Socket("10.40.2.7",2000);
          ???BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));??//接收服務(wù)器信息
          ???PrintWriter out = new PrintWriter(server.getOutputStream());?//向服務(wù)器發(fā)送信息
          ???
          ???BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));?//接收鍵盤輸入信息
          ???while(true){
          ????String outStr = wt.readLine();
          ????out.println(outStr);
          ????out.flush();
          ????
          ????if (outStr.equals("end")){
          ?????break;
          ????}
          ????System.out.println(in.readLine());
          ???}
          ???
          ???server.close();
          ??}catch(UnknownHostException e){
          ???
          ??}catch(IOException e){
          ???
          ??}
          ?}
          }
          ~~end.
          其中服務(wù)器和客戶端數(shù)據(jù)是通過socket對象進(jìn)行傳遞的,socket.getInputStream()得到客戶端(相對而言:程序本機(jī)就是服務(wù)器,別人就是客戶機(jī))傳遞過來的數(shù)據(jù)輸入流;server.getOutputStream()是即將返回的數(shù)據(jù)輸出流.? 另,程序的測試需要同時(shí)啟動(dòng)客戶端和服務(wù)器端程序.如果在一臺(tái)機(jī)器上同樣可以做這樣的測試,在eclipse的console中display selected console的選項(xiàng)可以在服務(wù)器端程序控制臺(tái)和客戶端程序控制臺(tái)間進(jìn)行切換.

        3. posted on 2007-05-15 17:05 心硯 閱讀(314) 評論(0)  編輯  收藏 所屬分類: Java

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          文章檔案

          Forum

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 会昌县| 邢台市| 许昌市| 贵南县| 玛纳斯县| 武汉市| 米泉市| 新绛县| 巫山县| 奈曼旗| 淮阳县| 合川市| 延安市| 中西区| 平定县| 翁牛特旗| 怀宁县| 绥滨县| 溧阳市| 兴安盟| 黄骅市| 澎湖县| 曲松县| 普安县| 卫辉市| 泽州县| 凤山县| 铁岭县| 鹤庆县| 平遥县| 祁阳县| 台北县| 平南县| 明水县| 张家界市| 行唐县| 满洲里市| 长泰县| 秭归县| 卢氏县| 茶陵县|