当前位置:求职简历网 > 知识 > 正文

捐精群

用C#实现聊天工具,单聊和群聊 一般用套接字传输信息。 客户端程序: 1. 打开VS.net,新建一个C#的模板为“Windows 应用程序”的项目,不妨命名为“ChatClient”。 2. 布置界面。往界面上添加

用C#实现聊天工具,单聊和群聊

一般用套接字传输信息。



客户端程序:

1. 打开VS.net,新建一个C#的模板为“Windows 应用程序”的项目,不妨命名为“ChatClient”。

2. 布置界面。往界面上添加一个ListBox控件(用于显示用户列表),一个RichTextBox控件(用于显示聊天消息以及系统消息),一个TextBox控件(用于发送消息),一个CheckBox控件(确定是否为悄悄话),一个StatusBar控件以及四个Button控件(分别为“连接”、“断开连接”、“开始记录”、“发送”)。各个控件的属性设置可以参见源代码中的具体设置,这里从略。

3. 客户端程序的代码编写。

当客户端试图和服务器端进行连接时,一个连接必须建立而且得向服务器端进行注册。 EstablishConnection()函数运用一个TcpClient来和服务器端取得连接,同时创建一个NetworkStream来发送消息。还有,端口号和服务器端的是保持一致的,均为5555。EstablishConnection()函数如下:

private void EstablishConnection()
{
statusBar1.Text = "正在连接到服务器";
try
{
clientsocket = new TcpClient(serveraddress,serverport);
ns = clientsocket.GetStream();
sr = new StreamReader(ns);
connected = true;
}
catch (Exception)
{
MessageBox.Show("不能连接到服务器!","错误",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
statusBar1.Text = "已断开连接";
}
}

在和服务器端连接成功后,程序就用RegisterWithServer()函数向服务器端发送一个CONN命令。该命令先是发送该用户的名称,然后从服务器端获得其他所有用户的列表,所有用户列表是在ListBox控件中显示的。该函数如下:

private void RegisterWithServer()
{
try
{
string command = "CONN|" + ChatOut.Text;
Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);


string serverresponse = sr.ReadLine();
serverresponse.Trim();
string[] tokens = serverresponse.Split(new Char[]{'|'});
if(tokens[0] == "LIST")
{
statusBar1.Text = "已连接";
btnDisconnect.Enabled = true;
}
for(int n=1; n
lbChatters.Items.Add(tokens[n].Trim(new char[]{'\r','\n'}));
this.Text = clientname + ":已连接到服务器";


}
catch (Exception)
{
MessageBox.Show("注册时发生错误!","错误",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
在此之后,当然就是用户之间的聊天了,由ReceiveChat()函数来完成。该函数是一个独立的线程,它处理所有用户获得的消息和用户发送的消息。它主要处理了CHAT、PRIV、JOIN、GONE、QUIT等命令,处理的方法和服务器端的类似。具体函数实现如下:

private void ReceiveChat()
{
bool keepalive = true;
while (keepalive)
{
try
{
Byte[] buffer = new Byte[2048];
ns.Read(buffer,0,buffer.Length);
string chatter = System.Text.Encoding.ASCII.GetString(buffer);
string[] tokens = chatter.Split(new Char[]{'|'});

if (tokens[0] == "CHAT")
{
rtbChatIn.AppendText(tokens[1]);
if(logging)
logwriter.WriteLine(tokens[1]);
}
if (tokens[0] == "PRIV")
{
rtbChatIn.AppendText("Private from ");
rtbChatIn.AppendText(tokens[1].Trim() );
rtbChatIn.AppendText(tokens[2] + "\r\n");
if(logging)
{
logwriter.Write("Private from ");
logwriter.Write(tokens[1].Trim() );
logwriter.WriteLine(tokens[2] + "\r\n");
}
}
if (tokens[0] == "JOIN")
{
rtbChatIn.AppendText(tokens[1].Trim() );
rtbChatIn.AppendText(" has joined the Chat\r\n");
if(logging)
{
logwriter.WriteLine(tokens[1]+" has joined the Chat");
}
string newguy = tokens[1].Trim(new char[]{'\r','\n'});
lbChatters.Items.Add(newguy);
}
if (tokens[0] == "GONE")
{
rtbChatIn.AppendText(tokens[1].Trim() );
rtbChatIn.AppendText(" has left the Chat\r\n");
if(logging)
{
logwriter.WriteLine(tokens[1]+" has left the Chat");
}
lbChatters.Items.Remove(tokens[1].Trim(new char[]{'\r','\n'}));
}
if (tokens[0] == "QUIT")
{
ns.Close();
clientsocket.Close();
keepalive = false;
statusBar1.Text = "服务器端已停止";
connected= false;
btnSend.Enabled = false;
btnDisconnect.Enabled = false;
}
}
catch(Exception){}
}
}

通过以上的一些函数,客户端程序之间就可以进行自由地聊天了,各个用户之间还可以互相发送悄悄话。所以程序已经实现了聊天室的基本功能了,不过最后各个用户还要正常地退出,那就要用到QuitChat()函数了。该函数的具体实现如下:

private void QuitChat()
{
if(connected)
{
try
{
string command = "GONE|" + clientname;
Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
clientsocket.Close();
}
catch(Exception)
{
}
}
if(logging)
logwriter.Close();
if(receive != null && receive.IsAlive)
receive.Abort();
this.Text = "客户端";
}

到此为止,客户端程序的主要部分都已经介绍完毕。还有一些按钮控件的消息处理函数可以参见源代码。同时,程序中还有一个聊天记录功能,该功能和现在流行的聊天软件的记录功能类似。不过限于篇幅,在这里就不一一介绍了,有兴趣的读者可以研究一下本文后面的源代码。

这样,客户端程序就完成了。程序运行图示如下:



总结:

本文向大家初步介绍了套接字的基本概念和实现套接字编程的基本原理,还通过一个很好的实例向大家展示了在C#下进行套接字编程的实现方法和一些编程技巧。从中,我们不难发现运用C#进行套接字编程乃至网络编程有许多优越之处。实例程序实现的思路清晰明了而且通俗易懂,是一个相当不错的例子,希望各位能好好研读。同时还希望大家能进一步完善该程序,使之功能更强大、界面更友好。


怎么进行捐精

  1 基本简介
捐精指适龄男士将自己精子捐献给医院的过程。所捐的精子用途包括由医院使一些不孕不育夫妇、同性恋女精子库子、单身女子获得小孩,以及为医院提供医学研究等。捐精中男人的健康不会有任何的伤害。

捐精不属于人道主义行为,更和爱国无关。实际上由于中国社会管理体制的不完善,捐精还留下了近亲繁衍的隐患,违背国家优生优育的一贯理念,更不利于国家民族的长远发展。这也是西方不喜欢捐精而喜欢领养的原因。
2 基本条件
1.供精者必须原籍为中国公民;
2.供精者赠精是一种自愿的行为;
3.供精者必须达到供精者健康检查标准;
4.供精者对所供精液的用途、权利和义务完全知情并签订供精知情同意书。
3 过程要求
所有供精志愿者在签署知情同意书后,均要进行初步筛查,初筛符合条件后,还须接受进一步的检查,达到健康检查标准后,方可供精。
3.1 供精者的初筛
供精者的年龄必须在22~45周岁之间,能真实地提供本人及其家族成员的一般病史和遗传病史,回答医师提出的其他相关问题,按要求提供精液标本以供检查。


请问去捐精是怎样捐的,一般人会可以捐吗?

怎样捐精:捐献者要在捐献室内,通过系列的消毒措施后,通过自慰的方式,采集一定量的精液,以备初次检验。初次检验,确定精液质量尚可的,将进行详细的体检,抽血,检查肝功能、染色体、艾滋病等项目,任何一项不合格,都将被淘汰。所有体检项目,都是免费的。体检全部过关后,每个志愿者每隔3~5天,到精子库通过自慰,采集一次精液,大约需要3~4次。采集完毕的精液,经过处理后,被贮存到液态氮中,以最后一次采集时间为起点,半年以后,还要对捐献者再次进行血液检查,确认没有感染艾滋病毒,该志愿者的精液将最后打上“合格”标签,进行冷冻保存。捐精者要求:捐献精子对捐精者的要求严格。卫生部要求,我国人类精子库捐精志愿者的基本条件是:具有中国国籍、22~45周岁之间、大学本科以上学历、身高在168厘米以上的健康男性。人类精子库按照上述要求,首先对捐精志愿者进行资格审查。然后,对捐精志愿者的精液标本进行常规检测,合格标本经冷冻、解冻来测试精子活力。如果冷冻之前精液里有60%快速活动的精子,解冻后还有40%能“复苏”,这样活力旺盛的精子才符合要求进入下一关。通过以上测试后,捐精者会被要求作一系列全身健康筛查,包括常规健康检查、专科检查、家族遗传病调查及心理健康测试等,并对有关资料详细记录,包括身高、体重、身材、脸型、眼皮、肤色、气质特点、爱好等,还有经遗传学专家进行遗传学筛查资料及心理测试结果,本人健康状况、健康史,有无接触放射线、有毒有害物质情况以及有无吸毒、酗酒、嗜烟等不良嗜好等情况,上述资料将永久保存。筛查过关后的化验检查则更加严格、细致,捐精者除要检查血型、染色体外,还要确定是否存在乙肝病毒、丙肝病毒、梅毒、淋病奈瑟菌、艾滋病病毒、衣原体、支原体、巨细胞病毒等病原体的感染。其精液还需进行细菌培养。通过这一系列的化验检查合格后,志愿捐精者才成为合格的捐精者,可以开始捐献精子。一般情况下,合格的捐精者会到精子库捐献5~6次,每个星期来一次,每次供精前必须禁欲3-7天。在供精期间,捐精者必须随时向精子库报告身体状况的任何变化,尤其是有关遗传性疾病、传染性疾病、性传播疾病以及性伴侣等情况变化,以便严格控制精液质量。如果被定为捐精者,一般在指定的时间内,去指定的地方通过手淫的发生收取精液。扩展资料关于捐精:1、捐精时都是自己取精。取精时并不需要把门关上,只用帘布挡着就行。取精时,是捐精者自己动手取精,一般不会有外人在场。同时,即使这里不关门,除了相关的工作人员外,一般人不会轻易走进捐精室。2、捐精之前先验血:首先,要采取精子样本。然后是精子的检验,会花大约一个小时,精子合格的话,就继续进行血液化验和各项体检,一个月之后出结果。如果都符合要求的话,就可以捐献了。一共要捐8-10次合格的精子,每次可以获得3000元的慰劳补偿费。3、然后填写供精同意书,填完个人基本资料之后,护士会把你带到一个交流窗口前进行指纹扫描,按照要求采集左手食指的指纹。然后就开始取精了,按照要求用一个用纸封口的小容量玻璃广口瓶采集精子用的,要用手淫的方式把精子收集到这个容器里面,注意要把全部都收好,不要弄到外面,之后放在窗口通道就行了。据了解,捐精者除要确保精子健康以外,还不能有遗传病或精神病等疾病。只有精子和血液都合格,才能正式进行供精。4、捐精期半年不得有性生活。捐精者把精子装入这个容器,交由工作人员。工作人员除了用专业仪器检测精子质量外,还会将精子放上半个小时左右,以检测精子会不会液化。合格的精子,将放入零下30摄氏度的环境中进行冷冻保存。据精子库的工作人员介绍,捐精期间,捐精者不得有性生活,否则捐精日期要往后顺延。这样下来,一个捐精周期大约要半年时间。也就是说,捐精者半年内不得过性生活。参考链接 人民网 大学生捐精

捐精为什么要学历要求?

不需要学历,以河南省为例:捐精不限身高学历 一个捐精者的精子最多能给5位女性使用:捐精人数和捐精者的合格率都大降,河南省人类精子库近日发布精子库告急消息。当局为鼓励男士捐精,以成功捐精可获5000元(人民币下同)作利诱,另悄悄取消以往对捐精者的身高和学历要求。由于捐精者下降,内地开放二孩后对捐精的需求急增,当局推出优惠政策,包括成功捐精者可获5000元补助,免费保存精液30年,还可获生殖功能、传染病、遗传病三大项的免费检查等等。扩展资料注意事项:男性一生可以捐精次数如果我国男性达到捐精要求,捐精者也仅限捐15毫升。这也意味着假如你已经捐过15毫升的精子,你就不能再继续捐精了,一生也只能捐精这么1次。 因为我国规定,为了不引起伦理纠纷,一个捐精者的精子最多只能给5位不孕女性使用。所以说靠捐精赚钱不现实,靠捐精买房更不现实。参考资料来源:人民网—捐精不限身高学历 靠捐精买房不现实参考资料来源:百度百科—捐精

男人捐精会不会产生什么严重的不良后果?

  那么,捐精对身体真的有危害吗?  捐精对身体没有伤害。精液主要成分是水分和少量有机成分,正常男性睾丸每时每刻都在产生精子。  正常情况下,当体内精液产生达到一定量之后,就会通过各种方式,如梦遗等排出体外。所以,对正常青壮年男性来说,每周2-3次的排精发生,不会对身体造成有害影响。  捐精并无坏处反倒有益健康  专家称捐精子其实对身体没有坏处,捐精事实上是一次男性体外排精过程,属于正常的精液新陈代谢,当精子成熟后储存在男性体内没有被排出来,精子就会慢慢老化、死亡被身体吸收。正常来说性成熟男性应该每周排一次精,排精过程中排出的不单是精子,还有前列腺液和精囊腺液也被排出来,如果强忍着精子不排就很可能导致前列腺炎和梦里遗精。另外长时间不排精子也会使心情烦躁、注意力不集中的负面影响。所以,捐精子不但不影响男性的身体健康,反而具有好处。  并非每个男人都可以捐精  年龄达标、身体健康的男性,也不是都能捐精。我国规定,捐精年龄在22—45岁,有捐精意向者,要签知情同意书,并进行4次精液质量筛查,只有2次以上质量合格的志愿者,才能进入下一轮。每次筛查需间隔3-7天,查完约需1个月。精液质量合格者,还要过体检关,才能开始捐精。  一般男性每次的精子量在2毫升左右,所以差不多需要10次才能完成一次捐精。而男子捐精时间每次间隔在5—7天最好,所以捐精大概要2-3个月之久,而期间还要反复检查是否有传染病,所以完成整个捐精过程基本上需要半年时间。另外,每位达到捐精要求的男性也仅限捐15毫升,这也意味着假如你已经捐过15毫升的精子,你就不能再继续捐精了,一生也只能捐精这么1次。   统计显示,我国不孕不育发病率在10%—15%,其中因男性精子原因导致的不孕不育占一半。对此,不少夫妇会通过人工授精的方法来解决生育问题。人工授精是指将男性精液用人工方法注入女性子宫颈或宫腔内,以协助受孕的方法。目前,世界上人工授精已相当普遍,中国大陆近年来在这方面的工作越来越多。不过,中国卫生部明确规定:医务人员不得向单身妇女实施辅助生殖技术,包括利用精子库。各地的精子库都必须经过严格的检查,由国家卫生部统一审批并且定期复查。


知识相关

知识推荐

求职简历网为你分享个人简历、求职简历、简历模板、简历范文等求职简历知识。

Copyrights 2018-2024 求职简历网 All rights reserved.