學習net包---簡單的socket通訊

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

        1. 服務器端代碼:
          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();?//服務器偵聽端口并接受到此套接字的連接
          ???BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));?//接收客戶端傳遞的數據流
          ???PrintWriter out=new PrintWriter(client.getOutputStream());? //服務器的返回值
          ???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()));??//接收服務器信息
          ???PrintWriter out = new PrintWriter(server.getOutputStream());?//向服務器發送信息
          ???
          ???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.
          其中服務器和客戶端數據是通過socket對象進行傳遞的,socket.getInputStream()得到客戶端(相對而言:程序本機就是服務器,別人就是客戶機)傳遞過來的數據輸入流;server.getOutputStream()是即將返回的數據輸出流.? 另,程序的測試需要同時啟動客戶端和服務器端程序.如果在一臺機器上同樣可以做這樣的測試,在eclipse的console中display selected console的選項可以在服務器端程序控制臺和客戶端程序控制臺間進行切換.

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

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

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          文章檔案

          Forum

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 苏尼特左旗| 临清市| 报价| 遵义县| 彰化县| 清苑县| 永寿县| 南乐县| 新闻| 博白县| 维西| 永嘉县| 高唐县| 南乐县| 桃源县| 弥渡县| 固原市| 青铜峡市| 朝阳区| 忻州市| 临猗县| 锡林郭勒盟| 玉山县| 齐齐哈尔市| 大港区| 罗平县| 黄陵县| 清远市| 漳平市| 呈贡县| 庐江县| 塘沽区| 山东省| 台湾省| 上高县| 从江县| 顺平县| 五常市| 芦溪县| 磐安县| 襄樊市|