导航:首页 > 编程语言 > socket编程试题

socket编程试题

发布时间:2024-09-20 08:23:06

‘壹’ C# SOCKET网络编程

1. 把 lisThd.ApartmentState = ApartmentState.STA; 注释掉,ApartmentState 已过时。2. 如果使用TCP协议,建议你使用 TcpListener 类和 TcpClient 类,更加方便。以下是一个示例以下示例说明如何设置 TcpClient 以连接到 TCP 端口 13 上的时间服务器。
using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeClient {
private const int portNum = 13;
private const string hostName = "host.contoso.com"; public static int Main(String[] args) {
try {
TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream();

byte[] bytes = new byte[1024];
int bytesRead = ns.Read(bytes, 0, bytes.Length); Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); client.Close(); } catch (Exception e) {
Console.WriteLine(e.ToString());
} return 0;
}
}
TcpListener 用于监视 TCP 端口上的传入请求,然后创建一个 Socket 或 TcpClient 来管理与客户端的连接。Start 方法启用侦听,而 Stop 方法禁用端口上的侦听。AcceptTcpClient 方法接受传入的连接请求并创建 TcpClient 以处理请求,AcceptSocket 方法接受传入的连接请求并创建 Socket 以处理请求。以下示例说明如何使用 TcpListener 创建网络时间服务器以监视 TCP 端口 13。当接受传入的连接请求时,时间服务器用来自宿主服务器的当前日期和时间进行响应。using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeServer { private const int portNum = 13; public static int Main(String[] args) {
bool done = false;

TcpListener listener = new TcpListener(portNum); listener.Start(); while (!done) {
Console.Write("Waiting for connection...");
TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try {
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();
client.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
} listener.Stop(); return 0;
}

}

‘贰’ socket接口网络编程

面向无连接的端对端通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//绑定套接字失败
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收数据失败
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=size(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向服务器发送数据失败
}
closesocket(s);
WSACleanup();

‘叁’ C++网络编程(socket)我要写一个服务器端程序和一个客户端程序

可以啊,解决方案上右键,添加项目,不过没这个必要啊,因为你又不能只开一个VS来同时调试两个项目。
设成启动项目后可以按F5进行调试运行,或者CTRL+F5进行不调试运行,不过最后还是只能调试一个项目

‘肆’ 总结最全面的TCP、UDP、Socket、HTTP网络编程面试题

第一场:

第二场: 心里憋了一万个草泥马来到的第二家

接着进入正题,网络编程的核心问题:什么是网络编程,网络编程中的两个主要问题,网络协议是什么,为什么要对网络协议分层,计算机网络体系结构,OSI参考模型,TCP/IP参考模型,TCP/IP四层协议(数据链路层、网络层、传输层、应用层)。

1 TCP/UDP

1.1 什么是TCP/IP和UDP

1.2 TCP与UDP区别

1.3 TCP和UDP的应用场景

1.4 形容一下TCP和UDP

1.5 运行在TCP或UDP的应用层协议分析

1.6 TCP的三次握手

1.6.1 什么是TCP的三次握手

1.6.2 三次握手的具体细节

1.6.3 用现实理解三次握手的具体细节

1.6.4 建立连接可以两次握手吗?为什么?

1.6.5 可以采用四次握手吗?为什么?

1.6.6 第三次握手中,如果客户端的ACK未送达服务器,会怎样?

1.6.7 如果已经建立了连接,但客户端出现了故障怎么办?

1.6.8 初始序列号是什么?

1.7 TCP的四次挥手

1.7.1 什么是TCP的四次挥手

1.7.2 四次挥手的具体细节

1.7.3 用现实理解三次握手的具体细节TCP的四次挥手

1.7.4 为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手(CLOSE_WAIT状态意义是什么)?

1.7.5 如果第二次挥手时服务器的ACK没有送达客户端,会怎样?

1.7.6 客户端TIME_WAIT状态的意义是什么?

2 Socket

2.1 什么是Socket

2.2 socket属于网络的那个层面

2.3 Socket通讯的过程

2.4 Socket的常用类

3 HTTP

3.1 什么是Http协议?Socket和http的区别和应用场景

3.2 什么是http的请求体?POST请求,GIT请求是没有请求体的

3.3 http的响应报文有哪些?http和https的区别?HTTPS工作原理

3.4 一次完整的HTTP请求所经历几个步骤?

3.5 常用HTTP状态码是怎么分类的,有哪些常见的状态码?

3.6 Http协议中有那些请求方式,GET方法与POST方法的区别

3.7 http版本的对比,HTTP1.0版本的特性,HTTP1.1版本新特性,HTTP2.0版本的特性

3.8 什么是对称加密与非对称加密,cookie和session对于HTTP有什么用?什么是cookie,什么是session,cookie与session区别

‘伍’ java socket网络编程

//==============Server.java=================//
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(12345);
System.out.println("服务器就绪,请启动客户端.");
Socket so = s.accept();
byte[] buff = new byte[1024];
int read = so.getInputStream().read(buff);
String[] abc=new String(buff,0,read).split("\\D+");
int a = Integer.parseInt(abc[0]);
int b = Integer.parseInt(abc[1]);
int c = Integer.parseInt(abc[2]);
if(!cbt(a,b,c))
so.getOutputStream().write("输入的数据无法组成三角形.".getBytes());
else
so.getOutputStream().write(getArea(a,b,c).getBytes());
so.getOutputStream().flush();
so.close();
s.close();
}

private static String getArea(int a, int b, int c) {
float s = (a+b+c)/2f;
return "面积: "+Math.sqrt(s*(s-a)*(s-b)*(s-c));
}

private static boolean cbt(int a, int b, int c) {
return a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b;
}
}

//=================Client.java======================//
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("输入三角形的三边并用逗号隔开,如: (3,4,5) ");
byte[] buff=new byte[64];
int r = System.in.read(buff);
String ipaddr = "localhost";//根据情况改变,在本机调试就不改了
Socket so = new Socket(ipaddr,12345);
so.getOutputStream().write(new String(buff,0,r).getBytes());
r = so.getInputStream().read(buff);
so.close();
String rs = new String(buff,0,r);
System.out.println(rs);
}

}

//先启动Server,再启动Client

‘陆’ VC中使用API编写的socket程序中如何设置阻塞和非阻塞accept,recv

关于阻塞和非阻塞概念,可能有些初学编程的人不是很清楚. 阻塞是指在函数执行时如果条件不满足,程序将永远停在那条函数那里不在往下执行,而非阻塞则是函数不管条件是否满足都会往下执行.例如在通讯过程中,当接收数据的时候,对于阻塞方式,程序将一直等到接收到数据才向下执行,而对于非阻塞方式,不管是否接收到数据,接收函数将被执行过去.一个比较完善的程序一般来讲都使用非阻塞的方式来进行.原因在于如果采用阻塞方式,程序将停在那里一直等待条件满足,正常情况下是没有问题的,但如果你想停止阻塞的程序,就出现了比较麻烦的问题. 对于VC中使用API方式进行的SOCKET编程,需要使用下面的函数来设置阻塞方式和非阻塞方式: ioctlsocket(gListenSocket, FIONBIO,&tBlockMode); //tBlockMode 0--block,1--no block ioctlsocket(gWorkSocket, FIONBIO,&tBlockMode); 注意,在开发server端程序时,这样设置会控制监听socket的accept()函数的阻塞和非阻塞模式,也可以设置工作socket的recv函数的阻塞和非阻塞模式.设置了非阻塞模式,可以使用查询方式进行accept和recv函数执行.

阅读全文

与socket编程试题相关的资料

热点内容
工作三年的大专程序员 浏览:726
java毕业设计文献 浏览:140
筹码集中度指标源码 浏览:477
listsortjava 浏览:181
plc闪光电路编程实例 浏览:297
socket编程试题 浏览:203
华为的服务器怎么设置从光驱启动 浏览:867
程序员真的累吗 浏览:323
学信网app为什么刷脸不了 浏览:871
天蝎vs程序员 浏览:991
单片机下载口叫什么 浏览:188
程序员的道 浏览:926
云服务器不实名违法吗 浏览:558
怎样查看文件夹图片是否重复 浏览:995
文件怎么导成pdf文件 浏览:808
打开sql表的命令 浏览:103
安卓手机如何面部支付 浏览:38
天元数学app为什么登录不上去 浏览:824
明日之后为什么有些服务器是四个字 浏览:104
安卓系统l1是什么意思 浏览:26