파일 수신 네트워크 무전기 C \ # 서버 안 드 로 이 드 클 라 이언 트 (2) C \ # 서버 코드 분석
10737 단어 android
완 성 된 프로젝트 다운로드 주소 (원본)
:http://download.csdn.net/detail/zhujinghao09/5313666
순서 기능 소개:
서버: PC
말. C#
버튼 으로 server Socket 오픈
private void btnStartServer_Click(object sender, EventArgs e)
{
string strip = tbIP.Text; // IP
string strport = tbPort.Text; //
IPAddress IP;
int Port;
try
{
if (strip != "" && strport != "")
{
IP = IPAddress.Parse(strip);
Port = Convert.ToInt32(strport);
this.lIP.Text = IP.ToString();
this.lport.Text = strport;
}
else // , 1234
{
IP = GetIP(); // IP
Port = 1234;
this.lIP.Text = IP.ToString();
this.lport.Text = Port.ToString();
}
if (IP != null)
serverFullAddr = new IPEndPoint(IP, Port);
else
{
MessageBox.Show(" IP !!");
return;
}
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(serverFullAddr);
lbserverState.Text = " !!";
}
catch(Exception el)
{
MessageBox.Show(el.Message);
return;
}
// , socket
ParameterizedThreadStart parstart = new ParameterizedThreadStart(ConnectListen);
Thread thListen = new Thread(parstart);
threadList.Add(thListen);
thListen.Start((object)server);
}
현지 IP 주소 지 취득 이 코드 는 인터넷 에서 직접 찾 았 습 니 다.
public IPAddress GetIP()
{
// string strAddr = "";
IPAddress IP=null;
try
{
string strHostName = System.Net.Dns.GetHostName();
System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
foreach (IPAddress _ipaddress in ipEntry.AddressList)
{
if (_ipaddress.AddressFamily.ToString().ToLower() == "internetwork")
{
//strAddr = _ipaddress.ToString();
IP = _ipaddress;
break;
}
}
// Log.Debug(" IP:" + strAddr);
}
catch (System.Exception e)
{
//Log.Error(" Get IP Address Error:" + e.Message);
MessageBox.Show(" IP!!!");
}
return IP;
}
청 감 클 라 이언 트 연속 스 레 드
private void ConnectListen(object server)
{
Socket serverSocket = (Socket)server;
while (true) //
{
serverSocket.Listen(20);
Socket acceptSock = serverSocket.Accept();
byte[] byteArray = new byte[50];
acceptSock.Receive(byteArray);// // 50 ,
//
string strRec = System.Text.Encoding.Default.GetString(byteArray); //C# byte[] string
string socketName = strRec.Substring(0, strRec.IndexOf("
"));
IPAddress clientIp = ((System.Net.IPEndPoint)acceptSock.RemoteEndPoint).Address; IP
string strip = clientIp.ToString();
socketNameList.Add(socketName);
socketIpList.Add(strip);
UpdatePersonListBox(); //
clientSocketList.Add(acceptSock);
ParameterizedThreadStart parstart = new ParameterizedThreadStart(RecvFile);
Thread th = new Thread(parstart);
threadList.Add(th);
th.Start((object)acceptSock);
}
}
수신 파일 스 레 드
매일 같은 이치
바 다 를 좋아한다. 짙 은 남색 이 든 빛 이 든 잔잔 하 든 파도 가 거 칠 든 기복 이 있 든 그 잔잔 한 파동 이 든.바다의 소 리 를 듣 는 것 을 좋아한다. 파도 가 암초 에 부 딪 히 든 파도 가 출 렁 이 든 부 드 럽 고 설 레 는 것 을 좋아한다.바 다 를 보 는 것 을 좋아 합 니 다. 마음 이 편안 하 든 답답 하 든 날씨 가 맑 든 흐 리 든 편안 하고 느슨 한........................................................
private void RecvFile(object acceptSock)
{
bool flag = false;
Socket recvSocket = (Socket)acceptSock;
byte[] byteArry = new byte[256];
string path = "recvVoice"; //
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string strnow = DateTime.Now.ToString("yyyyMMdd-hh-mm-ss"); //
string strpath = "recvVoice\\" + strnow + ".wav";
byte[] buffLen = new byte[50];
int count=recvSocket.Receive(buffLen); // 50
string strRec = System.Text.Encoding.Default.GetString(buffLen);
string fLen = strRec.Substring(0, strRec.IndexOf("
"));
int fileLen = 0;
try
{
fileLen = Convert.ToInt32(fLen);
}
catch(Exception el)
{
MessageBox.Show(el.Message);
}
int recCount = 0;
int readLen = 0;
MemoryStream memStream = new MemoryStream();
try
{
while ((recCount = recvSocket.Receive(byteArry)) > 0) //
{
readLen = readLen + recCount;
if (readLen >= fileLen) //
{
memStream.Write(byteArry, 0, recCount);
flag = true;
break;
}
memStream.Write(byteArry, 0, recCount); //
flag = true; //
}
}
catch (Exception el)
{
flag = false;
memStream.Close();
// fs.Close();
memStream = null;
// fs = null;
MessageBox.Show(el.Message);
RecvFile(acceptSock); //
return;
}
if (flag)
{
FileStream fs = new FileStream(strpath, FileMode.OpenOrCreate);
memStream.WriteTo(fs);
fs.Close();
fs = null;
UpdateLabel(flag);
IPAddress clientIp = ((System.Net.IPEndPoint)recvSocket.RemoteEndPoint).Address;
string strip = clientIp.ToString();
int index = socketIpList.IndexOf(strip);
AddVoiceToListBox(socketNameList[index] + "****" + socketIpList[index], strpath, flag); // ,
//
}
flag = false;
memStream.Close();
memStream = null;
RecvFile(acceptSock); //
}
현지 음성 으로 몇 통 의 편 지 를 보내다.
private void SendFile(Socket acceptSock,string vpath)
{
Socket sendSocket = (Socket)acceptSock;
byte[] byteArray = new byte[100];
Stream st = File.OpenRead(vpath);
Byte[] b = new Byte[1024];
string strlen = st.Length.ToString();
byte[] bytes = System.Text.Encoding.Default.GetBytes(strlen + "\r
"); //string byte[]
sendSocket.Send(bytes); //
int count = 0;
int sent = 0;
int offset = 0;
int left = 0;
Thread.Sleep(1000); //
while (offset < st.Length)
{
//buffer.CopyTo(b, 1024);
count = st.Read(b, 0, 1024);
offset = offset + count;
left = Convert.ToInt32(st.Length) - offset;
if (left <= 1024)
{
byte[] temp = new byte[left];
sent = sendSocket.Send(b);
// Thread.Sleep(10);
count = st.Read(b, 0, left);
sent = sendSocket.Send(temp);
break;
}
sent = sendSocket.Send(b);
}
IPAddress clientIp = ((System.Net.IPEndPoint)sendSocket.RemoteEndPoint).Address;
string strip = clientIp.ToString();
int index = socketIpList.IndexOf(strip);
AddVoiceToListBox("Server Send To ****" + socketNameList[index], vpath, true);
}
완 성 된 프로젝트 다운로드 주소 (원본)
:http://download.csdn.net/detail/zhujinghao09/5313666
글 이 끝나 면 다음 프로그래머 의 농담 어록 을 공유 하 겠 습 니 다. 여자친 구 (혹은 어떤 여자) 가 당신 과 이언 홍 사이 에서 하 나 를 고 르 게 할 것 같 습 니 다. 누 구 를 고 를 것 같 습 니까?답: 이 연 홍 같은 변절자 때문에 나 는 여자친 구가 없다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.