ZengCode.Com (The Thai Php Framework)  


Home   Download   Manual   About us    

Facebook   


MAIN MENU
เขียนโปรแกรมบน iPhone ด้วย MonoTouch
News
Php Tips
Ubuntu
Spring+Strut+Hibernate
Android Programming
Design Pattern By PHP
C# Design Pattern
Linux Quick Tips
C# Tips & Technique
C# using Linq น่าใช้จริงๆ
Java & JavaScript Tips
MAVEN
Database & SQL
ZengCode Framework Guide
Mac OSx
Zeng Code Code
Programming
IPhone (Tips and Trick)

Download เอกสารที่น่าสนใจ

     Socket C# Server ทำ 1 Request : 1 Thread  (2009-09-11)

using System;
using System.Threading;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Configuration;

class EmployeeTCPServer
{
    static TcpListener listener;
    static Socket soc;
    const int LIMIT = 5; //5 concurrent clients


    public static void Main()
    {
        System.Net.IPAddress localaddr = System.Net.IPAddress.Parse("127.0.0.1");
        listener = new TcpListener(localaddr, 2055);
        listener.Start();
        Console.WriteLine("Server mounted, listening to port 2055");
                   Thread t = new Thread(new ThreadStart(Recieve));
                   t.Start();
    }//main

    public static void Recieve()
    {
      while(true)
      {
        try
        {
            Socket soc = listener.AcceptSocket();
            if (soc.Connected)
            {
                Thread t = new Thread(new ThreadStart(Recieve));
                t.Start();
            }

            Console.WriteLine("Connected: {0}", soc.RemoteEndPoint);
            Stream s = new NetworkStream(soc);
            StreamReader sr = new StreamReader(s);
            StreamWriter sw = new StreamWriter(s);
            sw.AutoFlush = true; // enable automatic flushing

            // sw.WriteLine("{0} Employees available",ConfigurationSettings.AppSettings.Count);
            while (true)
            {
                string name = sr.ReadLine();
                if (name == "" || name == null) break;
                string job = name;
                if (job == null) job = "No such employee";
                Console.WriteLine("Recieve => " + job);
                sw.WriteLine("You send me ==> " + job);
            }
            s.Close();
            soc.Close();
        }
        catch (Exception e)
        {

            Console.WriteLine(e.Message);
            Console.WriteLine("Kill Thread");
           Thread.CurrentThread.Abort();
            //connection lost here
        }
     }
    }
}

สีแดงคือที่เพิ่มเติมนะครับ โดยเฉพาะ Thread.CurrentThread.Abort(); ถ้าลืมล่ะก้อ Thread จะวิ่งเผ่นผ่านเต็มเมมโมรี่ของคุณเลยครับ เพราะว่ามี while(true) หุหุ

 

ข้างล่างนี่ Client นะครับ

using System;
using System.IO;
using System.Net.Sockets;

class EmployeeTCPClient
{
    public static void Main()
    {
        TcpClient client; // = new TcpClient("10.164.195.162", 2055);
        try
        {
            client = new TcpClient("127.0.0.1", 2055);
            Stream s = client.GetStream();
            StreamReader sr = new StreamReader(s);
            StreamWriter sw = new StreamWriter(s);
            sw.AutoFlush = true;
            Console.WriteLine("a");
            //Console.WriteLine(sr.ReadLine());
            Console.WriteLine("b");
            while (true)
            {
                Console.Write("Name: ");
                string name = Console.ReadLine();
                sw.WriteLine(name);
                if (name == "") break;
                Console.WriteLine(sr.ReadLine());
            }
            s.Close();
        }catch(Exception exp)
        {
            Console.WriteLine("Error : " + exp);
        }

        Console.Read();
    }
}


Comment

MooDam  (20 กันยายน 2552)   
IP : 124.122.230.41

ขอบคุณครับ


Name
Comment
Security CodeCAPTCHA Image

web hit counter

This page took 0.122472 seconds to load.