Socket网络编程(2)--服务端实现

简介:

中秋了,首先祝大家中秋快乐,闲着无事在家整一个socket的聊天程序,有点仿QQ界面,就是瞎折腾,不知道最后是不是能将所有功能实现。

如果你对socket不了解,请看这篇文章:http://www.cnblogs.com/wolf-sun/p/3322300.html

可以让你快速对socket有个整体认识,如果你已经是socket网络编程高手,你可以忽略n个字,跳出本文章...

LZ想实现的功能有:

  1. 基本的聊天功能。
  2. 可以发送文件。
  3. 可以像qq那样发送震动。
  4. 可以截图,并发送。
  5. 可以在窗口中发送图片。
  6. 可以设置字体,字体颜色等功能。
  7. 最后也想实现视频语音等功能。

先将winform的客户端和服务端界面贴出来。山寨的我都不能忍了......

虽然不知道qq中具体实现是什么方式的,但是按自己现有水平一步步实现每个功能,那也是非常大的挑战,毕竟自己也是刚接触socket网络编程,也只能做一个查一个,逼自己多动手。

这里用的是多行TextBox控件,但是不能放图片,是个最大的问题。想考虑试试webbrower控件。

服务端代码:

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Net;
 8 using System.Net.Sockets;
 9 using System.Text;
10 using System.Threading;
11 using System.Threading.Tasks;
12 using System.Windows.Forms;
13 
14 namespace Wolfy.ChatServer
15 {
16     public partial class Server : Form
17     {
18         public Server()
19         {
20             InitializeComponent();
21             //不让其检查跨线程的操作
22             Control.CheckForIllegalCrossThreadCalls = false;
23         }
24 
25         private void btnSend_Click(object sender, EventArgs e)
26         {
27 
28         }
29 
30         private void btnStartService_Click(object sender, EventArgs e)
31         {
32             //服务器ip地址
33             IPAddress ip = IPAddress.Parse(txtIPAddress.Text);
34             //ip地址和端口
35             IPEndPoint endpoint = new IPEndPoint(ip, int.Parse(txtPort.Text));
36             //创建用于监听的socket
37             Socket socketListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
38             //绑定ip和端口
39             socketListener.Bind(endpoint);
40             //开始监听 限制连接数 最多可以连接10个
41             socketListener.Listen(10);
42             ShowMsg("开始监听......");
43             //创建线程 去监听连接
44             Thread th = new Thread(ListenConn);
45             //将线程变为后台线程
46             th.IsBackground = true;
47             th.Start(socketListener);
48         }
49         private void ListenConn(object o)
50         {
51             //将参数o 转化为监听的socket
52             Socket socketListener = o as Socket;
53             //写入循环 每一个连接就创建一个通信用的socket
54             while (true)
55             {
56                 //当有客户端连接成功 创建通信用的socket
57                 Socket connSocket = socketListener.Accept();
58                 ShowMsg(connSocket.RemoteEndPoint + " " + DateTime.Now.ToString() + " 连接成功");
59             }
60 
61         }
62         /// <summary>
63         /// 提示信息辅助方法
64         /// </summary>
65         /// <param name="msg"></param>
66         private void ShowMsg(string msg)
67         {
68             this.txtMsgView.AppendText(msg + "\r\n");
69         }
70     }
71 }
复制代码

 首先测试服务端是否开始监听...运行命令 netstat -a -b

可见服务端已经处于监听状态。

测试客户端和服务端的连接,这里使用telnet命令格式:telnet 127.0.0.1 50000

从服务端结果可以看出多客户端连接是成功的,并且可以看到系统为客户端随机分配了两个端口:2511和2512

结语:

      先写到这里,中秋了,也不能这样宅在家里啊,大家可以讨论一下,聊天信息窗口用什么控件比较好,可以支持文字输入又可以支持载入图片。

      这种socket的聊天程序太多了,大家可能腻了,但是上篇文章简单学习了socket,我觉得还是动手操作一下比较好,毕竟,你知道和你动手做,是两码事!

happy,中秋节

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/3329558.html
目录
相关文章
|
8天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
8天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
1月前
|
网络协议 Linux C语言
Linux实现socket网络通信
Linux实现socket网络通信
|
1月前
|
网络协议 安全 API
计算机网络之Socket编程
计算机网络之Socket编程
|
8天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
24 6
|
1月前
|
网络协议 Java
【计算机网络】TCP socket编程
【计算机网络】TCP socket编程
|
2月前
|
网络协议 Java
【JavaEE初阶】 网络编程基础与Socket套接字
【JavaEE初阶】 网络编程基础与Socket套接字
|
2月前
|
Java
[Java]Socket套接字(网络编程入门)
[Java]Socket套接字(网络编程入门)
38 0