这两天公司要求做一个聊天软件,要求基于Socket---TCP协议的。本人偷懒到网上一搜,好多阿!可后来仔细一看其实只有一个还算沾边。于是就下载 下来,但是编译、运行都有问题。后来又找了好几个,都是一样的。估计就是大家你抄袭我的我抄袭他的,谁也没有真正的编译运行一下。结果看似挺好的软件,实 际上根本不能运行。 于是我用了一天的时间(其实没有这么多。)把它们整理了一下,基本上主要功能可以运行了。下面把它贴到网上供大家参考。
服务器端:
(1)Form1.cs[设计]界面 (2)Form1.cs[代码]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections;
namespace ChatServer
{
public partial class Form1 : Form
{
static int listenport = 8000;
Socket clientsocket;
Thread clientservice;
ArrayList clients;
Thread threadListen;
TcpListener listener;
delegate void AddListCallBack(string TextContext);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
clients = new ArrayList();
}
private void StartListening()
{
listener = new TcpListener(IPAddress.Parse("127.0.0.1"),listenport);
listener.Start();
while (true)
{
try
{
Socket s = listener.AcceptSocket();
clientsocket = s;
clientservice = new Thread(new ThreadStart(ServiceClient));
clientservice.Start();
//MessageBox.Show(clientservice.ToString());
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
private void ServiceClient()
{
Socket client = clientsocket;
bool keepalive = true;
while (keepalive)
{
Byte[] buffer = new Byte[1024];
client.Receive(buffer);
string clientcommand = System.Text.Encoding.ASCII.GetString(buffer);
string[] tokens = clientcommand.Split(new Char[]{'|'});