服务端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的聊天系统】 在IT领域,网络通信是至关重要的组成部分,而Socket编程则是实现这一目标的关键技术。本文将深入探讨如何使用Java语言构建一个基于Socket的聊天系统,这是一项基础但至关重要的技能,对于...
在本项目“QT使用socket的聊天室”中,我们聚焦于利用QT的网络模块来实现基于TCP协议的客户端和服务端通信。下面将详细介绍这个项目中的关键知识点。 一、QT Socket基础 QT的网络编程主要依赖于`QTcpSocket`和`...
3. **数据接收**:与客户端类似,通过新Socket的`InputStream`接收客户端发送的数据。 4. **数据响应**:同样通过新Socket的`OutputStream`向客户端发送数据。 5. **关闭连接**:在处理完请求后,关闭Socket以及...
Socket编程是网络通信的核心技术,尤其在开发多人在线聊天室这样的应用中,它的重要性不言而喻。Socket,又称套接字,是操作系统提供的一种进程间通信机制,它允许两个或多个应用程序通过网络进行数据交换。在这个...
在"java socket多人聊天(文字+图片+文件)"这个项目中,开发者创建了一个支持多用户同时在线聊天的系统,不仅可以发送文字消息,还能交换图片和文件。以下是关于这个项目的一些关键知识点和实现细节: 1. **Socket...
Java即时聊天室意味着用户可以实时发送和接收消息,提供类似即时通讯软件的体验。 【标签】"socket聊天室 聊天室 java项目 socket" 这些标签进一步强调了项目的核心技术。"socket聊天室"指明了项目是关于使用Socket...
【标题】"SOCKET简单聊天实例.rar"是一个用于学习TCP SOCKET编程的基础教程资源,它包含了一个简单的聊天应用程序的源代码,适用于初学者。通过这个实例,开发者可以了解如何使用SOCKET进行网络通信,构建基本的...
Java Socket聊天室是一种基于Java编程语言实现的网络通信应用,它利用了Socket接口来构建一个局域网内的多人聊天环境,类似于QQ群的功能。在这个项目中,开发者运用了多线程技术来处理并发的用户交互,同时利用...
【标题】"Socket版QQ聊天"是一个典型的网络通信项目,主要使用了Socket编程技术来实现类似于QQ的在线聊天功能。Socket编程是网络编程的基础,它提供了应用程序之间进行数据传输的接口,使得不同计算机上的两个进程...
本篇文章将深入探讨如何使用C#来实现一个基于Socket的聊天程序,以及相关的重要知识点。 首先,Socket在计算机网络中扮演着桥梁的角色,它允许两台机器之间进行数据交换。在C#中,我们可以使用System.Net.Sockets...
在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)进行简单的Socket编程,创建一个基础的聊天程序,这对于初学者来说是一个很好的学习起点。 首先,我们需要了解Socket的基本原理。Socket是操作系统...
本篇将详细介绍"C# SOCKET 通信源代码(类似聊天室)"的相关知识点。 首先,我们要理解什么是SOCKET。SOCKET是操作系统提供的一个接口,它允许应用程序通过网络进行通信。在C#中,我们可以使用System.Net.Sockets...
在这个项目中,用户通过控制台(console)进行交互,体验类似于简单的在线聊天室。以下是对这个Java Socket聊天室项目的详细知识点解析: 1. **Java Socket API**: Java Socket API是Java提供的用于网络通信的低级...
使用java编写的类似聊天室的程序,在上次的基础上继续改进,将服务器端的IP地址写在配置文件里面,是程序的使用更加灵活,server.properties文件为配置文件,修改里面的ip地址为服务器端运行的ip地址即可使用。...
VB Socket聊天程序是一个基于Visual Basic编程语言实现的网络通信应用,类似于我们熟知的QQ即时通讯软件。它利用Socket技术来实现在互联网上的数据传输,允许用户进行文字聊天、设置昵称以及发送消息等功能。在VB中...
在TCP/IP网络通信环境下,Socket数据传输是一种特殊的I/O,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用-socket()。可以这样理解:Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过...
【基于Socket的聊天软件】是网络通信中一种常见的实现方式,它通过Socket接口来构建客户端与服务器之间的通信链路,从而实现数据的交互。在这个简单的示例中,我们看到两个程序,一个是服务器端(Server),另一个是...
【标题】"仿微信聊天软件-Socket实现"指的是利用Socket编程技术来开发一款类似于微信的即时通讯应用。在计算机网络中,Socket是提供进程间通信(IPC)的一种方式,尤其适用于分布式系统中的客户端与服务器之间的通信...
在这个"Socket聊天系统"中,我们主要探讨的是如何利用Java的Swing库来构建一个类似QQ的桌面聊天应用。 首先,让我们深入了解一下Socket编程的核心概念。Socket是TCP/IP协议族的一部分,它提供了一种在网络中建立和...