`
qq173684423
  • 浏览: 27759 次
社区版块
存档分类
最新评论

Scoket 类似聊天

阅读更多
服务端
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;

namespace Sockets
{
    public partial class ServerForm : Form
    {
        Socket s = null;
        IPEndPoint iep = null;
        byte[] buf = new byte[1024];
        Socket worker = null;

        public ServerForm()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //创建一个通道
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //创建一个侦听点
            iep = new IPEndPoint(IPAddress.Any, 20000);
            //绑定到通道上
            s.Bind(iep);
            //侦听
            s.Listen(6);
            //通过异步来处理
            s.BeginAccept(new AsyncCallback(Accept), s);
            this.button1.Visible = false;
        }

        void Accept(IAsyncResult ia)
        {
            s = ia.AsyncState as Socket;
            //worker = s.EndAccept();
            worker = s.EndAccept(ia);
            s.BeginAccept(new AsyncCallback(Accept), s);
            try
            {
                worker.BeginReceive(buf, 0, buf.Length,SocketFlags.None, new AsyncCallback(Receive), worker);
            }
            catch
            { throw; }
        }

        void Receive(IAsyncResult ia)
        {
            worker = ia.AsyncState as Socket;
            int count = worker.EndReceive(ia);
            worker.BeginReceive(buf, 0, buf.Length, SocketFlags.None, new AsyncCallback(Receive), worker);
            string context = Encoding.GetEncoding("gb2312").GetString(buf, 0, count);
            this.textBox1.Text += Environment.NewLine;
            this.textBox1.Text += context;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string context = "XXXXX" + this.textBox2.Text.Trim();
            if (context != "")
            {
                this.textBox1.Text += Environment.NewLine;
                this.textBox1.Text += context;
                this.textBox2.Text = "";
                worker.Send(Encoding.GetEncoding("gb2312").GetBytes(context));
            }
        }

        private void ServerForm_Load(object sender, EventArgs e)
        {

        }
    }
}

客户端
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;

namespace Sockets
{
    public partial class ClientForm : Form
    {
        Socket s = null;
        IPEndPoint iep = null;
        byte[] buf = new byte[1024];

        public ClientForm()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            iep = new IPEndPoint(IPAddress.Parse("192.168.10.131"), 20000);
            try
            {
                s.Connect(iep);
                this.label1.Text = "连接成功";
                this.button1.Visible = false;
            }
            catch
            { throw; }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string context = iep.ToString() + ":" + this.textBox2.Text.Trim();
            if (context != "")
            {
                this.textBox1.Text += Environment.NewLine;
                this.textBox1.Text += context;
                this.textBox2.Text = "";
                s.Send(Encoding.GetEncoding("gb2312").GetBytes(context));
                try
                {
                    s.BeginReceive(buf, 0, buf.Length, SocketFlags.None, new AsyncCallback(Receive), s);
                }
                catch
                { throw; }
            }
        }

        void Receive(IAsyncResult ia)
        {
            s = ia.AsyncState as Socket;
            int count = s.EndReceive(ia);
            s.BeginReceive(buf, 0, buf.Length, SocketFlags.None, new AsyncCallback(Receive), s);
            string context = Encoding.GetEncoding("gb2312").GetString(buf, 0, count);
            this.textBox1.Text += Environment.NewLine;
            this.textBox1.Text += context;
        }

        private void ClientForm_Load(object sender, EventArgs e)
        {

        }
    }
}
分享到:
评论

相关推荐

    基于socket的聊天系统

    【基于Socket的聊天系统】 在IT领域,网络通信是至关重要的组成部分,而Socket编程则是实现这一目标的关键技术。本文将深入探讨如何使用Java语言构建一个基于Socket的聊天系统,这是一项基础但至关重要的技能,对于...

    QT使用socket的聊天室

    在本项目“QT使用socket的聊天室”中,我们聚焦于利用QT的网络模块来实现基于TCP协议的客户端和服务端通信。下面将详细介绍这个项目中的关键知识点。 一、QT Socket基础 QT的网络编程主要依赖于`QTcpSocket`和`...

    Android socket通信聊天,客户端+服务端

    3. **数据接收**:与客户端类似,通过新Socket的`InputStream`接收客户端发送的数据。 4. **数据响应**:同样通过新Socket的`OutputStream`向客户端发送数据。 5. **关闭连接**:在处理完请求后,关闭Socket以及...

    Socket_聊天室_

    Socket编程是网络通信的核心技术,尤其在开发多人在线聊天室这样的应用中,它的重要性不言而喻。Socket,又称套接字,是操作系统提供的一种进程间通信机制,它允许两个或多个应用程序通过网络进行数据交换。在这个...

    java socket多人聊天(文字+图片+文件)

    在"java socket多人聊天(文字+图片+文件)"这个项目中,开发者创建了一个支持多用户同时在线聊天的系统,不仅可以发送文字消息,还能交换图片和文件。以下是关于这个项目的一些关键知识点和实现细节: 1. **Socket...

    聊天室基础项目资料_socket聊天室_聊天室_java项目_socket_

    Java即时聊天室意味着用户可以实时发送和接收消息,提供类似即时通讯软件的体验。 【标签】"socket聊天室 聊天室 java项目 socket" 这些标签进一步强调了项目的核心技术。"socket聊天室"指明了项目是关于使用Socket...

    SOCKET简单聊天实例.rar

    【标题】"SOCKET简单聊天实例.rar"是一个用于学习TCP SOCKET编程的基础教程资源,它包含了一个简单的聊天应用程序的源代码,适用于初学者。通过这个实例,开发者可以了解如何使用SOCKET进行网络通信,构建基本的...

    Java Socket聊天室

    Java Socket聊天室是一种基于Java编程语言实现的网络通信应用,它利用了Socket接口来构建一个局域网内的多人聊天环境,类似于QQ群的功能。在这个项目中,开发者运用了多线程技术来处理并发的用户交互,同时利用...

    socket版QQ聊天

    【标题】"Socket版QQ聊天"是一个典型的网络通信项目,主要使用了Socket编程技术来实现类似于QQ的在线聊天功能。Socket编程是网络编程的基础,它提供了应用程序之间进行数据传输的接口,使得不同计算机上的两个进程...

    C#实现socket聊天程序

    本篇文章将深入探讨如何使用C#来实现一个基于Socket的聊天程序,以及相关的重要知识点。 首先,Socket在计算机网络中扮演着桥梁的角色,它允许两台机器之间进行数据交换。在C#中,我们可以使用System.Net.Sockets...

    VC编写的socket简单聊天程序

    在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)进行简单的Socket编程,创建一个基础的聊天程序,这对于初学者来说是一个很好的学习起点。 首先,我们需要了解Socket的基本原理。Socket是操作系统...

    C# SOCKET 通信源代码(类似聊天室)

    本篇将详细介绍"C# SOCKET 通信源代码(类似聊天室)"的相关知识点。 首先,我们要理解什么是SOCKET。SOCKET是操作系统提供的一个接口,它允许应用程序通过网络进行通信。在C#中,我们可以使用System.Net.Sockets...

    java socket 聊天室

    在这个项目中,用户通过控制台(console)进行交互,体验类似于简单的在线聊天室。以下是对这个Java Socket聊天室项目的详细知识点解析: 1. **Java Socket API**: Java Socket API是Java提供的用于网络通信的低级...

    java socket简易聊天室

    使用java编写的类似聊天室的程序,在上次的基础上继续改进,将服务器端的IP地址写在配置文件里面,是程序的使用更加灵活,server.properties文件为配置文件,修改里面的ip地址为服务器端运行的ip地址即可使用。...

    vb socket 聊天(类似qq)

    VB Socket聊天程序是一个基于Visual Basic编程语言实现的网络通信应用,类似于我们熟知的QQ即时通讯软件。它利用Socket技术来实现在互联网上的数据传输,允许用户进行文字聊天、设置昵称以及发送消息等功能。在VB中...

    socket 聊天室

    在TCP/IP网络通信环境下,Socket数据传输是一种特殊的I/O,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用-socket()。可以这样理解:Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过...

    基于socket的聊天软件

    【基于Socket的聊天软件】是网络通信中一种常见的实现方式,它通过Socket接口来构建客户端与服务器之间的通信链路,从而实现数据的交互。在这个简单的示例中,我们看到两个程序,一个是服务器端(Server),另一个是...

    socket 聊天系统

    在这个"Socket聊天系统"中,我们主要探讨的是如何利用Java的Swing库来构建一个类似QQ的桌面聊天应用。 首先,让我们深入了解一下Socket编程的核心概念。Socket是TCP/IP协议族的一部分,它提供了一种在网络中建立和...

    使用Socket和ServerSocket实现多人聊天的聊天室程序

    本教程将聚焦于使用Java的Socket和ServerSocket类来构建一个基础的多人聊天室程序,这是TCP网络编程的一个经典应用。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Java中,`...

Global site tag (gtag.js) - Google Analytics