socket3

lunar0113 2007-09-06 12:30:33
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;

namespace EasyChat
{
public partial class login_frm : Form
{
/// <summary>
/// IP地址
/// </summary>
private IPAddress _ipAddr;

#region 登录窗体构造函数

/// <summary>
/// 构造函数,自动生成
/// </summary>
public login_frm()
{
InitializeComponent();
}

#endregion

#region 登录窗体的私有方法

/// <summary>
/// 验证登录信息
/// </summary>
/// <returns>验证结果</returns>
private bool ValidateInfo()
{
if (user_tb.Text.Trim() == string.Empty)
{
MessageBox.Show("请填写用户名!",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
return false;
}

if (!IPAddress.TryParse(svrip_tb.Text, out _ipAddr))
{
MessageBox.Show("IP地址不合法!",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
return false;
}
int _port;
if (!int.TryParse(svrport_tb.Text, out _port))
{
MessageBox.Show("端口号不合法!",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
return false;
}
else
{
if (_port < 1024 || _port > 65535)
{
MessageBox.Show("端口号不合法!",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
return false;
}
}
return true;
}

/// <summary>
/// 取消,关闭窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cancel_btn_Click(object sender, EventArgs e)
{
this.Close();
}

/// <summary>
/// 登录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void login_btn_Click(object sender, EventArgs e)
{
//验证数据合法性
if (!ValidateInfo())
{
return;
}
int port = int.Parse(svrport_tb.Text);
//向服务器发出连接请求
TCPConnection conn = new TCPConnection(_ipAddr, port);
TcpClient _tcpc = conn.Connect();
if (_tcpc == null)
{
MessageBox.Show("无法连接到服务器,请重试!",
"错误",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
else
{
NetworkStream netstream = _tcpc.GetStream();
//向服务器发送用户名以确认身份
netstream.Write(Encoding.Unicode.GetBytes(user_tb.Text), 0, Encoding.Unicode.GetBytes(user_tb.Text).Length);
//得到登录结果
byte[] buffer = new byte[50];
netstream.Read(buffer, 0, buffer.Length);
string connResult = Encoding.Unicode.GetString(buffer).TrimEnd('\0');
if (connResult.Equals("cmd::Failed"))
{
MessageBox.Show("您的用户名已经被使用,请尝试其他用户名!",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
return;
}
else
{
string svrskt = svrip_tb.Text + ":" + svrport_tb.Text;
chat_frm chatFrm = new chat_frm(user_tb.Text, netstream, svrskt);
chatFrm.Owner = this;
this.Hide();
chatFrm.Show();
}
}
}

/// <summary>
/// 初始化登录信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void login_frm_Load(object sender, EventArgs e)
{
svrip_tb.Text = "127.0.0.1";
svrport_tb.Text = "8888";
user_tb.Focus();
}

#endregion
}
}
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
panzi667 2007-09-15
  • 打赏
  • 举报
回复
学习中~
lunar0113 2007-09-06
  • 打赏
  • 举报
回复
using System;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace EasyChat
{
/// <summary>
/// TCP连接类,成功连接返回TcpClient引用,否则返回null
/// </summary>
class TCPConnection
{
private IPAddress _ip = null;
private int _port;
private TcpClient _tcpc = null;

public TCPConnection(IPAddress ip, int port)
{
_ip = ip;
_port = port;
}

public TcpClient Connect()
{
try
{
_tcpc = new TcpClient();
_tcpc.Connect(_ip, _port);
}
catch (Exception)
{
return null;
}
return _tcpc;
}
}
}

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧